Public Types |
| enum | ConstructionMode { QUERY_REPLICA_FOR_CONSTRUCTION,
QUERY_REPLICA_FOR_CONSTRUCTION_AND_DESTRUCTION,
QUERY_CONNECTION_FOR_REPLICA_LIST
} |
| | List of enumerations for how to get the list of valid objects for other systems. More...
|
Public Member Functions |
| virtual Replica3 * | AllocReplica (RakNet::BitStream *allocationIdBitstream, ReplicaManager3 *replicaManager3)=0 |
| | Class factory to create a Replica3 instance, given a user-defined identifier.
|
| void | AutoConstructByQuery (ReplicaManager3 *replicaManager3) |
| | Connection_RM3 (const SystemAddress &_systemAddress, RakNetGUID _guid) |
| void | CullUniqueNewAndDeletedObjects (DataStructures::Multilist< ML_STACK, Replica3 * > &newObjectsIn, DataStructures::Multilist< ML_STACK, Replica3 * > &deletedObjectsIn, DataStructures::Multilist< ML_STACK, Replica3 * > &newObjectsOut, DataStructures::Multilist< ML_STACK, Replica3 * > &deletedObjectsOut) |
| virtual void | DeserializeOnDownloadComplete (RakNet::BitStream *bitStream) |
| virtual void | DeserializeOnDownloadStarted (RakNet::BitStream *bitStream) |
| virtual void | GetConstructedReplicas (DataStructures::Multilist< ML_STACK, Replica3 * > &objectsTheyDoHave) |
| | Get list of all replicas that are constructed for this connection.
|
| RakNetGUID | GetRakNetGUID (void) const |
| SystemAddress | GetSystemAddress (void) const |
| bool | HasReplicaConstructed (RakNet::Replica3 *replica) |
| virtual ConstructionMode | QueryConstructionMode (void) const |
| | Queries how to get the list of objects that exist on remote systems.
|
| virtual bool | QueryGroupDownloadMessages (void) const |
| | Return whether or not downloads to our system should all be processed the same tick (call to RakPeer::Receive() )
|
| virtual void | QueryReplicaList (DataStructures::Multilist< ML_STACK, Replica3 *, Replica3 * > newReplicasToCreate, DataStructures::Multilist< ML_STACK, Replica3 *, Replica3 * > existingReplicasToDestroy) |
| | Callback used when QueryConstructionMode() returns QUERY_CONNECTION_FOR_REPLICA_LIST.
|
| virtual void | SendConstruction (DataStructures::Multilist< ML_STACK, Replica3 *, Replica3 * > &newObjects, DataStructures::Multilist< ML_STACK, Replica3 *, Replica3 * > &deletedObjects, PRO sendParameters, RakNet::RakPeerInterface *rakPeer, unsigned char worldId, ReplicaManager3 *replicaManager3) |
virtual
SendSerializeIfChangedResult | SendSerialize (RakNet::Replica3 *replica, bool indicesToSend[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNet::BitStream serializationData[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNet::Time timestamp, PRO sendParameters[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNet::RakPeerInterface *rakPeer, unsigned char worldId) |
virtual
SendSerializeIfChangedResult | SendSerializeIfChanged (DataStructures::DefaultIndexType queryToSerializeIndex, SerializeParameters *sp, RakNet::RakPeerInterface *rakPeer, unsigned char worldId, ReplicaManager3 *replicaManager) |
| void | SendValidation (RakNet::RakPeerInterface *rakPeer, unsigned char worldId) |
| virtual void | SerializeOnDownloadComplete (RakNet::BitStream *bitStream) |
| virtual void | SerializeOnDownloadStarted (RakNet::BitStream *bitStream) |
| virtual | ~Connection_RM3 () |
Public Attributes |
| bool | isFirstConstruction |
| bool | isValidated |
Protected Member Functions |
| void | ClearDownloadGroup (RakPeerInterface *rakPeerInterface) |
| void | OnConstructToThisConnection (DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager) |
| void | OnConstructToThisConnection (Replica3 *replica, ReplicaManager3 *replicaManager) |
| void | OnDereference (Replica3 *replica3, ReplicaManager3 *replicaManager) |
| void | OnDoNotQueryDestruction (DataStructures::DefaultIndexType queryToDestructIdx, ReplicaManager3 *replicaManager) |
| void | OnDownloadExisting (Replica3 *replica3, ReplicaManager3 *replicaManager) |
| void | OnDownloadFromOtherSystem (Replica3 *replica3, ReplicaManager3 *replicaManager) |
| void | OnDownloadFromThisSystem (Replica3 *replica3, ReplicaManager3 *replicaManager) |
| void | OnLocalReference (Replica3 *replica3, ReplicaManager3 *replicaManager) |
| void | OnNeverConstruct (DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager) |
| void | OnNeverSerialize (DataStructures::DefaultIndexType queryToSerializeIndex, ReplicaManager3 *replicaManager) |
| void | OnReplicaAlreadyExists (DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager) |
| void | OnSendDestructionFromQuery (DataStructures::DefaultIndexType queryToDestructIdx, ReplicaManager3 *replicaManager) |
| void | SendSerializeHeader (RakNet::Replica3 *replica, RakNet::Time timestamp, RakNet::BitStream *bs, unsigned char worldId) |
| void | ValidateLists (ReplicaManager3 *replicaManager) const |
Protected Attributes |
DataStructures::Multilist
< ML_ORDERED_LIST,
LastSerializationResult
*, Replica3 * > | constructedReplicaList |
DataStructures::Multilist
< ML_STACK, Replica3
*, Replica3 * > | constructedReplicasCulled |
DataStructures::Multilist
< ML_STACK, Replica3
*, Replica3 * > | destroyedReplicasCulled |
DataStructures::Multilist
< ML_QUEUE, Packet *, Packet * > | downloadGroup |
| bool | groupConstructionAndSerialize |
| RakNetGUID | guid |
DataStructures::Multilist
< ML_STACK,
LastSerializationResult
*, Replica3 * > | queryToConstructReplicaList |
DataStructures::Multilist
< ML_STACK,
LastSerializationResult
*, Replica3 * > | queryToDestructReplicaList |
DataStructures::Multilist
< ML_STACK,
LastSerializationResult
*, Replica3 * > | queryToSerializeReplicaList |
| SystemAddress | systemAddress |
Private Member Functions |
| | Connection_RM3 () |
Private Attributes |
| ConstructionMode | constructionMode |
Friends |
| class | ReplicaManager3 |
Important function: AllocReplica() - must be overridden to create an object given an identifier for that object, which you define for all objects in your game
Definition at line 356 of file ReplicaManager3.h.
| virtual bool RakNet::Connection_RM3::QueryGroupDownloadMessages |
( |
void |
| ) |
const [inline, virtual] |
Normally the system will send ID_REPLICA_MANAGER_DOWNLOAD_STARTED, ID_REPLICA_MANAGER_CONSTRUCTION for all downloaded objects, ID_REPLICA_MANAGER_SERIALIZE for each downloaded object, and lastly ID_REPLICA_MANAGER_DOWNLOAD_COMPLETE. This enables the application to show a downloading splash screen on ID_REPLICA_MANAGER_DOWNLOAD_STARTED, a progress bar, and to close the splash screen and activate all objects on ID_REPLICA_MANAGER_DOWNLOAD_COMPLETE However, if the application was not set up for this then it would result in incomplete objects spread out over time, and cause problems If you return true from QueryGroupDownloadMessages(), then these messages will be returned all in one tick, returned only when the download is complete
- Note:
- ID_REPLICA_MANAGER_DOWNLOAD_STARTED calls the callback DeserializeOnDownloadStarted()
-
ID_REPLICA_MANAGER_DOWNLOAD_COMPLETE calls the callback DeserializeOnDownloadComplete()
Definition at line 435 of file ReplicaManager3.h.
This advantage of this callback is if that there are many objects that a particular connection does not have, then we do not have to iterate through those objects calling QueryConstruction() for each of them.
BR> The following code uses a sorted merge sort to quickly find new and deleted objects, given a list of objects we know should exist.
BR> DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> objectsTheyShouldHave; // You have to fill in this list
DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> objectsTheyCurrentlyHave,objectsTheyStillHave,existingReplicasToDestro,newReplicasToCreatey;
GetConstructedReplicas(objectsTheyCurrentlyHave);
DataStructures::Multilist::FindIntersection(objectsTheyCurrentlyHave, objectsTheyShouldHave, objectsTheyStillHave, existingReplicasToDestroy, newReplicasToCreate);
BR> See GridSectorizer in the Source directory as a method to find all objects within a certain radius in a fast way.
BR>
- Parameters:
-
| [out] | newReplicasToCreate | Anything in this list will be created on the remote system |
| [out] | existingReplicasToDestroy | Anything in this list will be destroyed on the remote system |
Definition at line 459 of file ReplicaManager3.h.