RakNet  4.0
Public Member Functions | Public Attributes | List of all members
RakNet::Replica3 Class Referenceabstract

Base class for your replicated objects for the ReplicaManager3 system. More...

#include <ReplicaManager3.h>

Inheritance diagram for RakNet::Replica3:
RakNet::NetworkIDObject RakNet::Replica3Composite< parent_type >

Public Member Functions

virtual ~Replica3 ()
 
virtual void WriteAllocationID (RakNet::Connection_RM3 *destinationConnection, RakNet::BitStream *allocationIdBitstream) const =0
 Write a unique identifer that can be read on a remote system to create an object of this same class.
 
virtual RM3ConstructionState QueryConstruction (RakNet::Connection_RM3 *destinationConnection, ReplicaManager3 *replicaManager3)=0
 Ask if this object, which does not exist on destinationConnection should (now) be sent to that system.
 
virtual RM3DestructionState QueryDestruction (RakNet::Connection_RM3 *destinationConnection, ReplicaManager3 *replicaManager3)
 Ask if this object, which does exist on destinationConnection should be removed from the remote system.
 
virtual bool QueryRemoteConstruction (RakNet::Connection_RM3 *sourceConnection)=0
 We're about to call DeserializeConstruction() on this Replica3. If QueryRemoteConstruction() returns false, this object is deleted instead.
 
virtual bool QueryRelayDestruction (Connection_RM3 *sourceConnection) const
 We got a message from a connection to destroy this replica Return true to automatically relay the destruction message to all our other connections For a client in client/server, it does not matter what this funtion returns For a server in client/server, this should normally return true For a peer in peer to peer, you can normally return false since the original destroying peer would have told all other peers about the destruction If a system gets a destruction command for an object that was already destroyed, the destruction message is ignored.
 
virtual void SerializeConstruction (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection)=0
 Write data to be sent only when the object is constructed on a remote system.
 
virtual bool DeserializeConstruction (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection)=0
 Read data written by Replica3::SerializeConstruction()
 
virtual void SerializeConstructionExisting (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection)
 
virtual void DeserializeConstructionExisting (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection)
 
virtual void SerializeDestruction (RakNet::BitStream *destructionBitstream, RakNet::Connection_RM3 *destinationConnection)=0
 Write extra data to send with the object deletion event, if desired.
 
virtual bool DeserializeDestruction (RakNet::BitStream *destructionBitstream, RakNet::Connection_RM3 *sourceConnection)=0
 Read data written by Replica3::SerializeDestruction()
 
virtual
RakNet::RM3ActionOnPopConnection 
QueryActionOnPopConnection (RakNet::Connection_RM3 *droppedConnection) const =0
 The system is asking what to do with this replica when the connection is dropped.
 
virtual void OnPoppedConnection (RakNet::Connection_RM3 *droppedConnection)
 Notification called for each of our replicas when a connection is popped.
 
virtual void DeallocReplica (RakNet::Connection_RM3 *sourceConnection)=0
 Override with {delete this;}.
 
virtual
RakNet::RM3QuerySerializationResult 
QuerySerialization (RakNet::Connection_RM3 *destinationConnection)=0
 Implement with QuerySerialization_ClientSerializable(), QuerySerialization_ServerSerializable(), or QuerySerialization_PeerToPeer()
 
virtual void OnUserReplicaPreSerializeTick (void)
 Called for each replica owned by the user, once per Serialization tick, before Serialize() is called. If you want to do some kind of operation on the Replica objects that you own, just before Serialization(), then overload this function.
 
virtual RM3SerializationResult Serialize (RakNet::SerializeParameters *serializeParameters)=0
 Serialize our class to a bitstream.
 
virtual void OnSerializeTransmission (RakNet::BitStream *bitStream, RakNet::Connection_RM3 *destinationConnection, BitSize_t bitsPerChannel[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNet::Time curTime)
 Called when the class is actually transmitted via Serialize()
 
virtual void Deserialize (RakNet::DeserializeParameters *deserializeParameters)=0
 Read what was written in Serialize()
 
virtual void PostSerializeConstruction (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection)
 Called after SerializeConstruction completes for all objects in a given update tick.
Writes to PostDeserializeConstruction(), which is called after all objects are created for a given Construction tick(). Override to send data to PostDeserializeConstruction(), such as the NetworkID of other objects to resolve pointers to.
 
virtual void PostDeserializeConstruction (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection)
 
virtual void PostSerializeConstructionExisting (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection)
 Same as PostSerializeConstruction(), but for objects that returned RM3CS_ALREADY_EXISTS_REMOTELY from QueryConstruction.
 
virtual void PostDeserializeConstructionExisting (RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection)
 Same as PostDeserializeConstruction(), but for objects that returned RM3CS_ALREADY_EXISTS_REMOTELY from QueryConstruction.
 
virtual void PreDestruction (RakNet::Connection_RM3 *sourceConnection)
 
virtual RM3ConstructionState QueryConstruction_ClientConstruction (RakNet::Connection_RM3 *destinationConnection, bool isThisTheServer)
 Default call for QueryConstruction().
 
virtual bool QueryRemoteConstruction_ClientConstruction (RakNet::Connection_RM3 *sourceConnection, bool isThisTheServer)
 
virtual RM3ConstructionState QueryConstruction_ServerConstruction (RakNet::Connection_RM3 *destinationConnection, bool isThisTheServer)
 Default call for QueryConstruction().
 
virtual bool QueryRemoteConstruction_ServerConstruction (RakNet::Connection_RM3 *sourceConnection, bool isThisTheServer)
 Default call for QueryRemoteConstruction(). Allow the server to create this object, but not the client.
 
virtual RM3ConstructionState QueryConstruction_PeerToPeer (RakNet::Connection_RM3 *destinationConnection, Replica3P2PMode p2pMode=R3P2PM_SINGLE_OWNER)
 Default call for QueryConstruction().
 
virtual bool QueryRemoteConstruction_PeerToPeer (RakNet::Connection_RM3 *sourceConnection)
 Default call for QueryRemoteConstruction().
 
virtual
RakNet::RM3QuerySerializationResult 
QuerySerialization_ClientSerializable (RakNet::Connection_RM3 *destinationConnection, bool isThisTheServer)
 Default call for QuerySerialization().
 
virtual
RakNet::RM3QuerySerializationResult 
QuerySerialization_ServerSerializable (RakNet::Connection_RM3 *destinationConnection, bool isThisTheServer)
 Default call for QuerySerialization().
 
virtual
RakNet::RM3QuerySerializationResult 
QuerySerialization_PeerToPeer (RakNet::Connection_RM3 *destinationConnection, Replica3P2PMode p2pMode=R3P2PM_SINGLE_OWNER)
 Default call for QuerySerialization().
 
virtual RM3ActionOnPopConnection QueryActionOnPopConnection_Client (RakNet::Connection_RM3 *droppedConnection) const
 Default: If we are a client, and the connection is lost, delete the server's objects.
 
virtual RM3ActionOnPopConnection QueryActionOnPopConnection_Server (RakNet::Connection_RM3 *droppedConnection) const
 Default: If we are a server, and the connection is lost, delete the client's objects and broadcast the destruction.
 
virtual RM3ActionOnPopConnection QueryActionOnPopConnection_PeerToPeer (RakNet::Connection_RM3 *droppedConnection) const
 Default: If we are a peer, and the connection is lost, delete the peer's objects.
 
virtual void BroadcastDestruction (void)
 
RakNetGUID GetCreatingSystemGUID (void) const
 
bool WasReferenced (void) const
 
- Public Member Functions inherited from RakNet::NetworkIDObject
virtual void SetNetworkIDManager (NetworkIDManager *manager)
 
virtual NetworkIDManagerGetNetworkIDManager (void)
 Returns what was passed to SetNetworkIDManager.
 
virtual NetworkID GetNetworkID (void)
 
virtual void SetNetworkID (NetworkID id)
 
virtual void SetParent (void *_parent)
 
virtual void * GetParent (void) const
 

Public Attributes

RakNetGUID creatingSystemGUID
 
RakNetGUID deletingSystemGUID
 GUID of the system that caused the item to send a deletion command over the network.
 

Additional Inherited Members

- Protected Attributes inherited from RakNet::NetworkIDObject
NetworkID networkID
 The network ID of this object.
 
void * parent
 The parent set by SetParent()
 

Detailed Description

Base class for your replicated objects for the ReplicaManager3 system.

To use, derive your class, or a member of your class, from Replica3.

Constructor & Destructor Documentation

virtual RakNet::Replica3::~Replica3 ( )
virtual

Before deleting a local instance of Replica3, call Replica3::BroadcastDestruction() for the deletion notification to go out on the network. It is not necessary to call ReplicaManager3::Dereference(), as this happens automatically in the destructor

Member Function Documentation

virtual void RakNet::Replica3::BroadcastDestruction ( void  )
virtual

Call to send a network message to delete this object on other systems.
Call it before deleting the object

virtual void RakNet::Replica3::DeallocReplica ( RakNet::Connection_RM3 sourceConnection)
pure virtual

Override with {delete this;}.

  1. Got a remote message to delete this object which passed DeserializeDestruction(), OR
  2. ReplicaManager3::SetAutoManageConnections() was called autoDestroy true (which is the default setting), and a remote system that owns this object disconnected) OR <>
    Override with {delete this;} to actually delete the object (and any other processing you wish).
    If you don't want to delete the object, just do nothing, however, the system will not know this so you are responsible for deleting it yoruself later.
    destructionBitstream may be 0 if the object was deleted locally

Implemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::Deserialize ( RakNet::DeserializeParameters *  deserializeParameters)
pure virtual

Read what was written in Serialize()

Reads the contents of the class from SerializationParamters::serializationBitstream.
Called whenever Serialize() is called with different data from the last send.

Parameters
[in]serializationBitstreamBitstream passed to Serialize()
[in]timeStamp0 if unused, else contains the time the message originated on the remote system
[in]sourceConnectionWhich system sent to us

Implemented in RakNet::Replica3Composite< parent_type >.

virtual bool RakNet::Replica3::DeserializeConstruction ( RakNet::BitStream constructionBitstream,
RakNet::Connection_RM3 sourceConnection 
)
pure virtual

Read data written by Replica3::SerializeConstruction()

Reads whatever data was written to constructionBitstream in Replica3::SerializeConstruction()

Parameters
[out]constructionBitstreamBitstream written to in Replica3::SerializeConstruction()
[in]sourceConnectionSystem that sent us this network message.
Returns
true to accept construction of the object. false to reject, in which case the object will be deleted via Replica3::DeallocReplica()

Implemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::DeserializeConstructionExisting ( RakNet::BitStream constructionBitstream,
RakNet::Connection_RM3 sourceConnection 
)
inlinevirtual

Same as DeserializeConstruction(), but for an object that already exists on the remote system. Used if you return RM3CS_ALREADY_EXISTS_REMOTELY from QueryConstruction

Reimplemented in RakNet::Replica3Composite< parent_type >.

virtual bool RakNet::Replica3::DeserializeDestruction ( RakNet::BitStream destructionBitstream,
RakNet::Connection_RM3 sourceConnection 
)
pure virtual

Read data written by Replica3::SerializeDestruction()

Return true to delete the object. BroadcastDestruction() will be called automatically, followed by ReplicaManager3::Dereference.
Return false to not delete it. If you delete it at a later point, you are responsible for calling BroadcastDestruction() yourself.

Implemented in RakNet::Replica3Composite< parent_type >.

RakNetGUID RakNet::Replica3::GetCreatingSystemGUID ( void  ) const

creatingSystemGUID is set the first time Reference() is called, or if we get the object from another system

Returns
System that originally created this object
virtual void RakNet::Replica3::OnSerializeTransmission ( RakNet::BitStream bitStream,
RakNet::Connection_RM3 destinationConnection,
BitSize_t  bitsPerChannel[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS],
RakNet::Time  curTime 
)
inlinevirtual

Called when the class is actually transmitted via Serialize()

Use to track how much bandwidth this class it taking

virtual void RakNet::Replica3::PostDeserializeConstruction ( RakNet::BitStream constructionBitstream,
RakNet::Connection_RM3 sourceConnection 
)
inlinevirtual

Called after DeserializeConstruction completes for all objects in a given update tick.
This is used to resolve dependency chains, where two objects would refer to each other in DeserializeConstruction, yet one had not been constructed yet In PostDeserializeConstruction(), you know that all objects have already been created, so can resolve NetworkIDs to pointers safely. You can also use it to trigger some sort of event when you know the object has completed deserialization.

Parameters
[in]constructionBitstreamBitStream written in PostSerializeConstruction()
[in]sourceConnectionSystem that sent us this network message.

Reimplemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::PreDestruction ( RakNet::Connection_RM3 sourceConnection)
inlinevirtual

Called after DeserializeDestruction completes for the object successfully, but obviously before the object is deleted.
Override to trigger some sort of event when you know the object has completed destruction.

Parameters
[in]sourceConnectionSystem that sent us this network message.

Reimplemented in RakNet::Replica3Composite< parent_type >.

virtual RakNet::RM3ActionOnPopConnection RakNet::Replica3::QueryActionOnPopConnection ( RakNet::Connection_RM3 droppedConnection) const
pure virtual

The system is asking what to do with this replica when the connection is dropped.

Return QueryActionOnPopConnection_Client, QueryActionOnPopConnection_Server, or QueryActionOnPopConnection_PeerToPeer

Implemented in RakNet::Replica3Composite< parent_type >.

virtual RM3ConstructionState RakNet::Replica3::QueryConstruction ( RakNet::Connection_RM3 destinationConnection,
ReplicaManager3 replicaManager3 
)
pure virtual

Ask if this object, which does not exist on destinationConnection should (now) be sent to that system.

If ReplicaManager3::QueryConstructionMode() returns QUERY_CONNECTION_FOR_REPLICA_LIST or QUERY_REPLICA_FOR_CONSTRUCTION_AND_DESTRUCTION (default), then QueyrConstruction() is called once per tick from ReplicaManager3::Update() to determine if an object should exist on a given system.
Based on the return value, a network message may be sent to the other system to create the object.
If QueryConstructionMode() is overriden to return QUERY_CONNECTION_FOR_REPLICA_LIST, this function is unused.

Note
Defaults are provided: QueryConstruction_PeerToPeer(), QueryConstruction_ServerConstruction(), QueryConstruction_ClientConstruction(). Return one of these functions for a working default for the relevant topology.
Parameters
[in]destinationConnectionWhich system we will send to
[in]replicaManager3Plugin instance for this Replica3
Returns
What action to take

Implemented in RakNet::Replica3Composite< parent_type >.

virtual RM3ConstructionState RakNet::Replica3::QueryConstruction_ClientConstruction ( RakNet::Connection_RM3 destinationConnection,
bool  isThisTheServer 
)
virtual

Default call for QueryConstruction().

Both the client and the server is allowed to create this object. The network topology is client/server

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual RM3ConstructionState RakNet::Replica3::QueryConstruction_PeerToPeer ( RakNet::Connection_RM3 destinationConnection,
Replica3P2PMode  p2pMode = R3P2PM_SINGLE_OWNER 
)
virtual

Default call for QueryConstruction().

All clients are allowed to create all objects. The object is not relayed when remotely created

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]p2pModeIf controlled only by this system ever, pass R3P2PM_SINGLE_OWNER. Otherwise pass R3P2PM_MULTI_OWNER_CURRENTLY_AUTHORITATIVE or R3P2PM_MULTI_OWNER_NOT_CURRENTLY_AUTHORITATIVE
virtual RM3ConstructionState RakNet::Replica3::QueryConstruction_ServerConstruction ( RakNet::Connection_RM3 destinationConnection,
bool  isThisTheServer 
)
virtual

Default call for QueryConstruction().

Only the server is allowed to create this object. The network topology is client/server

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual RM3DestructionState RakNet::Replica3::QueryDestruction ( RakNet::Connection_RM3 destinationConnection,
ReplicaManager3 replicaManager3 
)
inlinevirtual

Ask if this object, which does exist on destinationConnection should be removed from the remote system.

If ReplicaManager3::QueryConstructionMode() returns QUERY_REPLICA_FOR_CONSTRUCTION_AND_DESTRUCTION (default), then QueryDestruction() is called once per tick from ReplicaManager3::Update() to determine if an object that exists on a remote system should be destroyed for a given system.
Based on the return value, a network message may be sent to the other system to destroy the object.
Note that you can also destroy objects with BroadcastDestruction(), so this function is not useful unless you plan to delete objects for only a particular connection.
If QueryConstructionMode() is overriden to return QUERY_CONNECTION_FOR_REPLICA_LIST, this function is unused.

Parameters
[in]destinationConnectionWhich system we will send to
[in]replicaManager3Plugin instance for this Replica3
Returns
What action to take. Only RM3CS_SEND_DESTRUCTION does anything at this time.

Reimplemented in RakNet::Replica3Composite< parent_type >.

virtual bool RakNet::Replica3::QueryRemoteConstruction ( RakNet::Connection_RM3 sourceConnection)
pure virtual

We're about to call DeserializeConstruction() on this Replica3. If QueryRemoteConstruction() returns false, this object is deleted instead.

By default, QueryRemoteConstruction_ServerConstruction() does not allow clients to create objects. The client will get Replica3::DeserializeConstructionRequestRejected().
If you want the client to be able to potentially create objects for client/server, override accordingly.
Other variants of QueryRemoteConstruction_* just return true.

Note
Defaults are provided: QueryRemoteConstruction_PeerToPeer(), QueryRemoteConstruction_ServerConstruction(), QueryRemoteConstruction_ClientConstruction(). Return one of these functions for a working default for the relevant topology.
Parameters
[in]sourceConnectionWhich system sent us the object creation request message.
Returns
True to allow the object to pass onto DeserializeConstruction() (where it may also be rejected), false to immediately reject the remote construction request

Implemented in RakNet::Replica3Composite< parent_type >.

virtual bool RakNet::Replica3::QueryRemoteConstruction_ClientConstruction ( RakNet::Connection_RM3 sourceConnection,
bool  isThisTheServer 
)
virtual

Default call for QueryRemoteConstruction().

Both the client and the server is allowed to create this object. The network topology is client/server The code means on the client or the server, allow creation of Replica3 instances

Parameters
[in]sourceConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual bool RakNet::Replica3::QueryRemoteConstruction_PeerToPeer ( RakNet::Connection_RM3 sourceConnection)
virtual

Default call for QueryRemoteConstruction().

All clients are allowed to create all objects. The object is not relayed when remotely created

Parameters
[in]sourceConnectiondestinationConnection parameter passed to QueryConstruction()
virtual bool RakNet::Replica3::QueryRemoteConstruction_ServerConstruction ( RakNet::Connection_RM3 sourceConnection,
bool  isThisTheServer 
)
virtual

Default call for QueryRemoteConstruction(). Allow the server to create this object, but not the client.

Only the server is allowed to create this object. The network topology is client/server The code means if this is the server, and I got a command to create a Replica3 to ignore it. If this is the client, to allow it.

Parameters
[in]sourceConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual RakNet::RM3QuerySerializationResult RakNet::Replica3::QuerySerialization ( RakNet::Connection_RM3 destinationConnection)
pure virtual

Implement with QuerySerialization_ClientSerializable(), QuerySerialization_ServerSerializable(), or QuerySerialization_PeerToPeer()

QuerySerialization() is a first pass query to check if a given object should serializable to a given system. The intent is that the user implements with one of the defaults for client, server, or peer to peer.
Without this function, a careless implementation would serialize an object anytime it changed to all systems. This would give you feedback loops as the sender gets the same message back from the recipient it just sent to.
If more than one system can serialize the same object then you will need to override to return true, and control the serialization result from Replica3::Serialize(). Be careful not to send back the same data to the system that just sent to you!

Returns
True to allow calling Replica3::Serialize() for this connection, false to not call.

Implemented in RakNet::Replica3Composite< parent_type >.

virtual RakNet::RM3QuerySerializationResult RakNet::Replica3::QuerySerialization_ClientSerializable ( RakNet::Connection_RM3 destinationConnection,
bool  isThisTheServer 
)
virtual

Default call for QuerySerialization().

Use if the values you are serializing are generated by the client that owns the object. The serialization will be relayed through the server to the other clients.

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual RakNet::RM3QuerySerializationResult RakNet::Replica3::QuerySerialization_PeerToPeer ( RakNet::Connection_RM3 destinationConnection,
Replica3P2PMode  p2pMode = R3P2PM_SINGLE_OWNER 
)
virtual

Default call for QuerySerialization().

Use if the values you are serializing are on a peer to peer network. The peer that owns the object will send to all. Remote peers will not send.

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]p2pModeIf controlled only by this system ever, pass R3P2PM_SINGLE_OWNER. Otherwise pass R3P2PM_MULTI_OWNER_CURRENTLY_AUTHORITATIVE or R3P2PM_MULTI_OWNER_NOT_CURRENTLY_AUTHORITATIVE
virtual RakNet::RM3QuerySerializationResult RakNet::Replica3::QuerySerialization_ServerSerializable ( RakNet::Connection_RM3 destinationConnection,
bool  isThisTheServer 
)
virtual

Default call for QuerySerialization().

Use if the values you are serializing are generated only by the server. The serialization will be sent to all clients, but the clients will not send back to the server.

Parameters
[in]destinationConnectiondestinationConnection parameter passed to QueryConstruction()
[in]isThisTheServerTrue if this system is the server, false if not.
virtual RM3SerializationResult RakNet::Replica3::Serialize ( RakNet::SerializeParameters serializeParameters)
pure virtual

Serialize our class to a bitstream.

User should implement this function to write the contents of this class to SerializationParamters::serializationBitstream.
If data only needs to be written once, you can write it to SerializeConstruction() instead for efficiency.
Transmitted over the network if it changed from the last time we called Serialize().
Called every time the time interval to ReplicaManager3::SetAutoSerializeInterval() elapses and ReplicaManager3::Update is subsequently called.

Parameters
in/out]serializeParameters Parameters controlling the serialization, including destination bitstream to write to
Returns
Whether to serialize, and if so, how to optimize the results

Implemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::SerializeConstruction ( RakNet::BitStream constructionBitstream,
RakNet::Connection_RM3 destinationConnection 
)
pure virtual

Write data to be sent only when the object is constructed on a remote system.

SerializeConstruction is used to write out data that you need to create this object in the context of your game, such as health, score, name. Use it for data you only need to send when the object is created.
After SerializeConstruction() is called, Serialize() will be called immediately thereafter. However, they are sent in different messages, so Serialize() may arrive a later frame than SerializeConstruction() For that reason, the object should be valid after a call to DeserializeConstruction() for at least a short time.

Note
The object's NetworkID and allocation id are handled by the system automatically, you do not need to write these values to constructionBitstream
Parameters
[out]constructionBitstreamDestination bitstream to write your data to
[in]destinationConnectionSystem that will receive this network message.

Implemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::SerializeConstructionExisting ( RakNet::BitStream constructionBitstream,
RakNet::Connection_RM3 destinationConnection 
)
inlinevirtual

Same as SerializeConstruction(), but for an object that already exists on the remote system. Used if you return RM3CS_ALREADY_EXISTS_REMOTELY from QueryConstruction

Reimplemented in RakNet::Replica3Composite< parent_type >.

virtual void RakNet::Replica3::SerializeDestruction ( RakNet::BitStream destructionBitstream,
RakNet::Connection_RM3 destinationConnection 
)
pure virtual

Write extra data to send with the object deletion event, if desired.

Replica3::SerializeDestruction() will be called to write any object destruction specific data you want to send with this event. destructionBitstream can be read in DeserializeDestruction()

Parameters
[out]destructionBitstreamBitstream for you to write to
[in]destinationConnectionSystem that will receive this network message.

Implemented in RakNet::Replica3Composite< parent_type >.

bool RakNet::Replica3::WasReferenced ( void  ) const
inline
Returns
If ReplicaManager3::Reference() was called on this object.
virtual void RakNet::Replica3::WriteAllocationID ( RakNet::Connection_RM3 destinationConnection,
RakNet::BitStream allocationIdBitstream 
) const
pure virtual

Write a unique identifer that can be read on a remote system to create an object of this same class.

The value written to allocationIdBitstream will be passed to Connection_RM3::AllocReplica().
Sample implementation:
{allocationIdBitstream->Write(RakNet::RakString("Soldier");}

Parameters
[out]allocationIdBitstreamBitstream for the user to write to, to identify this class

Implemented in RakNet::Replica3Composite< parent_type >.

Member Data Documentation

RakNetGUID RakNet::Replica3::creatingSystemGUID

GUID of the system that first called Reference() on this object. Transmitted automatically when the object is constructed


The documentation for this class was generated from the following file: