Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Distributed Network Object Subsystem


Files

file  DistributedNetworkObject.h
 Distributed Object System.
file  DistributedNetworkObjectHeader.h
 Provide Macro for the Distributed Object System.
file  DistributedNetworkObjectManager.h
 Manager for distributed Objects.
file  DistributedNetworkObjectStub.h
 Provide glue code for all Distributed Object.
file  EncodeClassName.h
 Class Name encoding for DNO subsystem.
file  DistributedNetworkObject.cpp
 implementation of DistributedObject class
file  DistributedNetworkObjectManager.cpp
 Distributed Object Manager Implementation.
file  DistributedNetworkObjectStub.cpp
 Implementation of Distributed Object Stub.
file  EncodeClassName.cpp

Classes

class  DistributedNetworkObject
 Distributed Network Object base class. More...
class  DistributedNetworkObjectManager
 Distributed Network Object Manager class. More...
class  DistributedNetworkObjectBaseStub
class  DistributedNetworkObjectStub< T >

Defines

#define REGISTER_DISTRIBUTED_CLASS(className)   DistributedNetworkObjectStub<className> distributedNetworkObjectStub_##className(#className);
#define DOM_COPY_UNCOMPRESSED
#define REGISTER_1_DISTRIBUTED_OBJECT_MEMBERS(BaseClass, SynchronizationMethod1, AuthoritativeNetwork1, VariableType1, VariableName1)
#define DOM_INTERPOLATION_CODE(AuthoritativeNetwork, VariableName)

Functions

void EncodeClassName (char *name, char *identifier)

Detailed Description

This is the higher level construction within RakNet. It provides the user with synchronized distributed network object.

Define Documentation

#define DOM_COPY_UNCOMPRESSED
 

DOM stands for distributed object member - COPY will send data without interpolation. When the packet arrives the remote value will immediately take the new value. INTERPOLATE will send data and use interpolation. When the packet arrives the remote value will gradually take the new value according to DistributedNetworkObject::maximumUpdateFrequency Uncompressed should be used for non-native types, such as structures, or native types whose values take the range of the entire variable. At this time Uncompressed will not work with arrays or pointers. However, you can enclose arrays in a struct or register each element Compressed can only be used for native types, and will result in data compression if the variable value is less than half of its maximum range

#define DOM_INTERPOLATION_CODE AuthoritativeNetwork,
VariableName   ) 
 

Value:

if (VariableName!=VariableName##_FinalValue && VariableName##_LastKnownValue!=VariableName##_LastReadValue && VariableName##_LastKnownValue==VariableName) \
        { \
                if (currentTime >= VariableName##_InterpolationEndTime) \
                        VariableName=VariableName##_FinalValue; \
                else \
                { \
                        VariableName = VariableName##_InitialValue + (currentTime - VariableName##_InterpolationStartTime) / (float)(VariableName##_InterpolationEndTime - VariableName##_InterpolationStartTime) * (VariableName##_FinalValue - VariableName##_InitialValue); \
                } \
                VariableName##_LastKnownValue = VariableName; \
        } \
This is called when you call DistributedNetworkObject::InterpolateDistributedMemory, one per interpolated member

#define REGISTER_1_DISTRIBUTED_OBJECT_MEMBERS BaseClass,
SynchronizationMethod1,
AuthoritativeNetwork1,
VariableType1,
VariableName1   ) 
 

REGISTER_DISTRIBUTED_OBJECT_MEMBERS is optional. If you use it, it must be put in the public section of the class that you want to have automatically synchronized member variables. Base class should be the class the enclosing class immediately derives from. You can pass DistributedNetworkObject if it derives from no other class. AuthoritativeNetwork should be DOM_SERVER_AUTHORITATIVE or DOM_CLIENT_AUTHORITATIVE depending on which system is the authority for an object SynchronizationMethod should be any of the values immediately above Variable type can be any type other than a pointer. However, for interpolation it must also have *, +, -, and = defined. Variable name should be the name of the variable to synchronize and its type must match the type specified immediately prior.

#define REGISTER_DISTRIBUTED_CLASS className   )     DistributedNetworkObjectStub<className> distributedNetworkObjectStub_##className(#className);
 

This define should be put after the class definition, once per class that you want to be distributed


Function Documentation

void EncodeClassName char *  name,
char *  identifier
 

Build the encoded class name.

Parameters:
name the name
identifier 


Generated on Mon May 30 17:45:43 2005 for raknet by  doxygen 1.4.2