Classhierachy

New classes

SeamActor (::VisualActor)

SeamActor is similar to GeometryActor. It has a sceneRoot for the secondary world and an actorManager for the actors in the secondary world. It also holds the ID for the destination actor which describes the destination in as well as port and hostname of the gserver of the secondary world. It has a new method to set the direction and position in the secondary world.

SeamDestActor (::VisualActor)

The SeamDestActor class describes the origin and the heading of the seam in the secondary world.

ServerSeamDestActor (::ServerActor)

Adds the method moveTo to move the position of the seam and its heading in the secondary world. This method sends the UpdateClientPosPkt Packet to the client.
The method draw draws a circle, the position as a point and the heading as a line.

ServerClientActor (::ServerActor)

Describes a client on the server. Radius and heading  are special properties of ServerClientActor and are therefore deleted in ServerActor.
destActor  is a pointer to the ServerSeamDestActor object if the client is a seam and not a GeometryClient, otherwise it is NULL.
The method draw draws a circle, the position as a point and the heading as a line.

ServerSeamActor (::ServerActor)

The method connect logs into a gserver if no client has logged in before. All clients who are in the AOI of the seam are inserted in the client's ActorManager.
The method disconnect removes the client from the clients list and if no client is left, it logs out of the gserver.
The ServerSeamActor has similar methods like the GeometryClient used for the network communication:
run, procTransmitSeamPos, procKillActor, procTransmitActor, procActorPos, procTransmitGeometry, procTransmitSlod
The method execUserFunc calls one of the proc-methods depending on the received packet. This method is necessary because the ServerSeamActor is not static like the GeometryClient and therefore more instances are possible.

TransmitSeamPkt(::DemandPkt)

TransmitSeamPkt is a network packet class which handles the transmission of the seam actor through the network. It is similar to the TransmitActorPkt with the new properties port and host.
 

TransmitSeamActorAcknowledgePkt(::DemandPkt)

The TransmitSeamActorAcknowledgePkt packet class transmits only the actorId and the worldId. It is used for syncronisation with the gserver. If the seam object at the gserver receives the packet from the client it knows that it is time to log into the secondary world's gserver.
 
 

Modified classes

GeometryClient

+getSceneRoot

The method 'getSceneRoot' with the parameter WorldID of type NetID returns the according sceneRoot of the property 'csam'. The list 'csam' contains all seams of the AOI (Area Of Interest). If 'getSceneRoot' is called with WorldID 0 then the sceneRoot of the GeometryClient is returned.

+setSceneRoot

Sets the SceneRoot of the GeometryClient.

+getActor

looks for the requested actor identified by an actorId and a worldId.

+checkRoaming

  • for every seam in the AOI (=csam list)
  • should the user be roamed into the secondary world?
  • if so, do the roaming
  • The following 5 new Methods are recursive parts of the old method maintainAOI. This is necessary for performing the maintainAOI with worlds in worlds (seams). Although our design is limited to 2 worlds it makes the code more scaleable.

    +maintainAOIGeometry

    +maintainAOISlod

    +slodNumberOfTriangles

    +setArea

    +setDeltaTri

    +procUpdateClientPos

    Is used to set new directions and positions of the seam in the GeometryClient.

    +removeAllActors

    Removes all actors with  their geometry from the GeometryClient to clear the scene.

    GeometryServer

    +procTransmitSeamActorAcknowledge

    to guarantee that the seam data arrives at the client before data of actors of the secondary world, the client sends an acknowledge when the seam data arrives.
    After the gServer has received the TransmitSeamActorAcknowledge packet it logs into the gServer of the secondary world and requests the geometry.

    ServerActor

    +draw

    A virtual function that handles the display at the gserver. In case of a ServerActor it draws a point.