Version 1 (modified by scheusso, 16 years ago) (diff) |
---|
Synchronisable
The most important part of the Network API is the Synchronisable Class (see also Synchronisable):
- This class provides the functionality for objects to get synchronised over the network:
- REGISTERDATA/REGISTERSTRING: these functions register a variable (to the Network Engine) that needs synchronisation
- setObjectMode: this function sets the direction of synchronisation (server→client / server↔client / server←client)
- Every class that needs synchronisation must fullfill some dependencies:
- It must (public) inherit from Synchronisable
- It must have a default constructor
- All steps in object creation that need data (from the levelfile or the network) must be in the create() function
- It must implement the following functions:
- registerAllVariables: register all variables (currently only basic types and strings), that need synchronisation, to the network engine by calling REGISTERDATA and/or REGISTERSTRING
- create: (as described above)
- set appropriate synchronisation direction (default: server→client) by calling setObjectMode
Synchronisable functions:
REGISTERDATA(varname)
Use this makro to synchronise a membervariable of a class (like position, velocity, …). This makro sets the sync-direction of the variable to server→client
int SomeClass::i; // membervariable i REGISTERDATA(i);
REGISTERDATA_WITHMODE(varname, mode)
Use this makro if you want to sync a variable using a different direction than the default.
int SomeClass::i; //membervariable i REGISTERDATA_WITHMODE(i, network::direction::toclient); //same as REGISTERDATA(i) //or REGISTERDATA_WITHMODE(i, network::direction::toserver); //sync i only to the server (be carefull when using this) //or REGISTERDATA_WITHMODE(i, network::direction::bidirectional); //sync i in both directions
REGISTERSTRING(stringname)
same as REGISTERDATA but for strings
REGISTERSTRING_WITHMODE(stringname, mode)
same as REGISTERDATA_WITHMODE but for strings
setObjectMode
this sets the sync direction of the whole object (default: server→client).
Note: if you don't call setObjectMode with a value other than network::direction::toclient then the variables will only be synchronised to the client (if at all)