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.