#include <ReplicaManager2.h>
Inherited by PopcornSampleConnection.
Public Member Functions | |
Connection_RM2 () | |
Constructor. | |
virtual | ~Connection_RM2 () |
Destructor. | |
virtual Replica2 * | Construct (RakNet::BitStream *replicaData, SystemAddress sender, SerializationType type, ReplicaManager2 *replicaManager, RakNetTime timestamp, NetworkID networkId, bool networkIDCollision)=0 |
virtual void | SerializeDownloadStarted (RakNet::BitStream *objectData, ReplicaManager2 *replicaManager, SerializationContext *serializationContext) |
virtual void | SerializeDownloadComplete (RakNet::BitStream *objectData, ReplicaManager2 *replicaManager, SerializationContext *serializationContext) |
virtual void | DeserializeDownloadStarted (RakNet::BitStream *objectData, SystemAddress sender, ReplicaManager2 *replicaManager, RakNetTime timestamp, SerializationType serializationType) |
virtual void | DeserializeDownloadComplete (RakNet::BitStream *objectData, SystemAddress sender, ReplicaManager2 *replicaManager, RakNetTime timestamp, SerializationType serializationType) |
virtual void | SetConstructionByList (DataStructures::OrderedList< Replica2 *, Replica2 *, ReplicaManager2::Replica2ObjectComp > ¤tVisibility, ReplicaManager2 *replicaManager) |
virtual void | SetVisibilityByList (DataStructures::OrderedList< Replica2 *, Replica2 *, ReplicaManager2::Replica2ObjectComp > ¤tVisibility, ReplicaManager2 *replicaManager) |
virtual void | SetConstructionByReplicaQuery (ReplicaManager2 *replicaManager) |
virtual void | SetVisibilityByReplicaQuery (ReplicaManager2 *replicaManager) |
void | SetSystemAddress (SystemAddress sa) |
Set the system address to use with this class instance. This is set internally when the object is created. | |
SystemAddress | GetSystemAddress (void) const |
Get the system address associated with this class instance. |
virtual Replica2* RakNet::Connection_RM2::Construct | ( | RakNet::BitStream * | replicaData, | |
SystemAddress | sender, | |||
SerializationType | type, | |||
ReplicaManager2 * | replicaManager, | |||
RakNetTime | timestamp, | |||
NetworkID | networkId, | |||
bool | networkIDCollision | |||
) | [pure virtual] |
Factory function, used to create instances of your game objects Encoding is entirely up to you. replicaData will hold whatever was written bitStream in Replica2::SerializeConstruction() One efficient way to do it is to use StringTable.h. This allows you to send predetermined strings over the network at a cost of 9 bits, up to 65536 strings
[in] | replicaData | Whatever was written bitStream in Replica2::SerializeConstruction() |
[in] | type | Whatever was written serializationType in Replica2::SerializeConstruction() |
[in] | replicaManager | ReplicaManager2 instance that created this class. |
[in] | timestamp | timestamp sent with Replica2::SerializeConstruction(), 0 for none. |
[in] | networkId | NetworkID that will be assigned automatically to the new object after this function returns |
[in] | networkIDCollision | True if the network ID that should be assigned to this object is already in use. Usuallly this is because the object already exists, and you should just read your data and return 0. |
void Connection_RM2::SerializeDownloadStarted | ( | RakNet::BitStream * | objectData, | |
ReplicaManager2 * | replicaManager, | |||
SerializationContext * | serializationContext | |||
) | [virtual] |
CALLBACK: Called before a download is sent to a new connection
[out] | objectData | What data you want to send to DeSerializeDownloadStarted() |
[in] | replicaManager | Which replica manager to use to perform the send |
in/out] | serializationContext Target recipient, optional timestamp, type of command |
void Connection_RM2::SerializeDownloadComplete | ( | RakNet::BitStream * | objectData, | |
ReplicaManager2 * | replicaManager, | |||
SerializationContext * | serializationContext | |||
) | [virtual] |
CALLBACK: Called after a download is sent to a new connection
[out] | objectData | What data you want to send to DeSerializeDownloadComplete() |
[in] | replicaManager | Which replica manager to use to perform the send |
in/out] | serializationContext Target recipient, optional timestamp, type of command |
void Connection_RM2::DeserializeDownloadStarted | ( | RakNet::BitStream * | objectData, | |
SystemAddress | sender, | |||
ReplicaManager2 * | replicaManager, | |||
RakNetTime | timestamp, | |||
SerializationType | serializationType | |||
) | [virtual] |
CALLBACK: A new connection was added. All objects that are constructed and visible for this system will arrive immediately after this message. Write data to objectData by deriving from SerializeDownloadStarted()
[in] | objectData | objectData Data written through SerializeDownloadStarted() |
[in] | replicaManager | Which replica manager to use to perform the send |
[in] | timestamp | timestamp sent, 0 for none |
[in] | serializationType | Type of command |
void Connection_RM2::DeserializeDownloadComplete | ( | RakNet::BitStream * | objectData, | |
SystemAddress | sender, | |||
ReplicaManager2 * | replicaManager, | |||
RakNetTime | timestamp, | |||
SerializationType | serializationType | |||
) | [virtual] |
CALLBACK: A new connection was added. All objects that are constructed and visible for this system have now arrived. Write data to objectData by deriving from SerializeDownloadComplete
[in] | objectData | objectData Data written through SerializeDownloadComplete() |
[in] | replicaManager | Which replica manager to use to perform the send |
[in] | timestamp | timestamp sent, 0 for none |
[in] | serializationType | Type of command |
void Connection_RM2::SetConstructionByList | ( | DataStructures::OrderedList< Replica2 *, Replica2 *, ReplicaManager2::Replica2ObjectComp > & | currentVisibility, | |
ReplicaManager2 * | replicaManager | |||
) | [virtual] |
Given a list of objects, compare it against lastConstructionList. BroadcastConstruct() is called for objects that only exist in the new list. BroadcastDestruct() is called for objects that only exist in the old list. This is used by SetConstructionByReplicaQuery() for all Replica2 that do not return BQR_ALWAYS from Replica2::QueryConstruction() If you want to pass your own, more efficient list to check against, call ReplicaManager2::SetAutoUpdateScope with construction=false and call this function yourself when desired
[in] | List | of all objects that do not return BQR_ALWAYS from Replica2::QueryConstruction() that should currently be created on this system |
[in] | replicaManager | Which replica manager to use to perform the send |
void Connection_RM2::SetVisibilityByList | ( | DataStructures::OrderedList< Replica2 *, Replica2 *, ReplicaManager2::Replica2ObjectComp > & | currentVisibility, | |
ReplicaManager2 * | replicaManager | |||
) | [virtual] |
Given a list of objects, compare it against lastSerializationList. Replica2::BroadcastVisibility(true) is called for objects that only exist in the new list. Replica2::BroadcastVisibility(false) is called for objects that only exist in the old list. This is used by SetVisibilityByReplicaQuery() for all Replica2 that do not return BQR_ALWAYS from Replica2::QueryVisibility() If you want to pass your own, more efficient list to check against, call ReplicaManager2::SetAutoUpdateScope with construction=false and call this function yourself when desired
[in] | List | of all objects that do not return BQR_ALWAYS from Replica2::QueryConstruction() that should currently be created on this system |
[in] | replicaManager | Which replica manager to use to perform the send |
void Connection_RM2::SetConstructionByReplicaQuery | ( | ReplicaManager2 * | replicaManager | ) | [virtual] |
Go through all registered Replica2 objects that do not return BQR_ALWAYS from Replica2::QueryConstruction() For each of these objects that return BQR_YES, pass them to currentVisibility in SetConstructionByList() Automatically called every tick if ReplicaManager2::SetAutoUpdateScope with construction=true is called (which is the default)
[in] | replicaManager | Which replica manager to use to perform the send |
void Connection_RM2::SetVisibilityByReplicaQuery | ( | ReplicaManager2 * | replicaManager | ) | [virtual] |
Go through all registered Replica2 objects that do not return BQR_ALWAYS from Replica2::QueryVisibility() For each of these objects that return BQR_YES, pass them to currentVisibility in SetVisibilityByList() Automatically called every tick if ReplicaManager2::SetAutoUpdateScope with construction=true is called (which is the default)
[in] | replicaManager | Which replica manager to use to perform the send |