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) |
|
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 |
|
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; \ } \ |
|
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. |
|
This define should be put after the class definition, once per class that you want to be distributed |
|
Build the encoded class name.
|