UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes

Unigine::Plugins::Syncker::Slave Class

Warning
The functionality described in this article is not available in the Community SDK edition.
You should upgrade to Sim SDK edition to use it.
Header: #include <plugins/UnigineSyncker.h>
Inherits: Syncker

This class represents the slave interface of the Syncker.

Notice
Syncker plugin must be loaded.

Slave Class

Enums

CALLBACK_INDEX#

NameDescription
SESSION_STARTED = 0Callback function to be fired on starting a session.
Callback signature:
Source code
callback_function_name(void)
SESSION_FINISHED = 1Callback function to be fired on closing a session.
Callback signature:
Source code
callback_function_name(void)
MASTER_CONNECTED = 2Callback function to be fired on successful connection to the Master.
Callback signature:
Source code
callback_function_name(void)
MASTER_DISCONNECTED = 3Callback function to be fired on disconnecting from the Master. The reason for disconnection specified in string format ("disconnected by master", "timeout", etc.)
Callback signature:
Source code
callback_function_name(const char *reason)
NODE_LOADED = 4Callback function to be fired on creating a node by the Master on the Slave via loadNode() / loadNodeReference() / createNode().
Callback signature:
Source code
callback_function_name(const NodePtr &node)

SKIP_FLAGS#

Flags defining data from the Master to be ignored by the Slave.
NameDescription
WORLD_LOAD = 1Loading worlds.
GAME = 1 << 1Game class (time and speed), for particles — ifps and seed.
PLAYER = 1 << 2Current Master camera synchronization (every frame).
RENDER = 1 << 3Render and post-effects settings.
NODES = 1 << 4Nodes.
MATERIALS = 1 << 5Materials.
SET_PLAYER = 1 << 6Ignoring setSlavePlayer() calls by the Master.
VIEW_OFFSET = 1 << 7Changing view offset parameters.
USER_DATA = 1 << 8Processing user packets sent via sendMessage().
NODE_LOAD = 1 << 9Loading nodes from *.node files.
NODEREF_LOAD = 1 << 10Loading node references from *.node files.
NODE_CREATE = 1 << 11Node creation.
NODE_ID_REGISTER = 1 << 12Links between dynamic nodes of the Master and Slaves (via ID) created via loadNode(), createNode(), etc.
NODE_DELETE = 1 << 13Node removal.
RUN_CONSOLE = 1 << 14Running console commands.
PROJECTIONS = 1 << 15Projections configuration. Can be disabled for Slaves having their projections configured manually via API.

Members


double getMasterTime ( ) #

Returns the current Master time (with latency and packet processing corrections).

Return value

Current master time, in seconds.

int getMasterNodeID ( int slave_node_id ) #

Returns the ID of a dynamic node on the Master by its local ID on the Slave. A Slave does not create an exact copy of a node created on the Master, their IDs do not match. So, knowing an ID of a local copy of a node created on the Master, you can easily find its original on the Master. This can be used in user messages, when you need to apply some specific modifications to source node on the Master.

Arguments

  • int slave_node_id - Node's ID on the Slave.

Return value

ID of the node on the Master.

int getSlaveNodeID ( int master_node_id ) #

Returns the local ID of a dynamic node on the Slave by its ID on the Master. A Slave does not create an exact copy of a node created on the Master, their IDs do not match. So, if you created a node on the Master and then called the Syncker::Master::createNode() method, you can easily find its copy on the current Slave. This can be used in user messages, when you need to apply some specific modifications to a Slave's copy of a node, that was created on the Master.

Arguments

  • int master_node_id - Node's ID on the Master.

Return value

ID of the node on the Slave.

void addSyncNode ( const Ptr<Node> & node, int master_node_id ) #

Enables synchronization of parameters of the given node via the UDP protocol.
Notice
Scene nodes are not synchronized by default, this method is used to add a particular node to the synchronization queue.

Arguments

  • const Ptr<Node> & node - Node to synchronize.
  • int master_node_id - ID of the node on the Master.

bool removeSyncNode ( const Ptr<Node> & node ) #

Removes the specified node from the synchronization queue.

Arguments

  • const Ptr<Node> & node - Node to be removed.

Return value

true if the node was successfully removed from the synchronization queue; otherwise, false.

bool removeSyncNodeID ( int slave_node_id ) #

Removes the node with the given number from the synchronization queue.

Arguments

  • int slave_node_id - Node number in the synchronization queue.

Return value

true if the node was successfully removed from the synchronization queue; otherwise, false.

long long getID ( ) #

Returns the current ID of the Slave.

Return value

ID of the slave combined as follows: IP address (32 bits) + port number (16 bits).

void setSkipFlags ( int flags ) #

Sets the skip flags enabling you to ignore certain information from the Master.

Arguments

  • int flags - A combination of skip flags to be used, for example:
    Source code (C++)
    slave->setSkipFlags(GAME | WORLD_LOAD | USER_DATA);

int getSkipFlags ( ) #

Returns the current skip flags combination enabling you to ignore certain information from the Master.

Return value

A combination of currently used skip flags.

void * addCallback ( CALLBACK_INDEX callback, Unigine::CallbackBase * func ) #

Adds a callback of the specified type. Callback functions can be used to determine actions to be performed when sending or receiving user messages, as well as when changing settings on the Master or a Slave. The signature of the callback function can be one of the following:
Source code (C++)
// for the Syncker::Slave::SESSION_STARTED type
void callback_function_name(void);

// for the Syncker::Slave::SESSION_FINISHED type
void callback_function_name(void);

// for the Syncker::Slave::MASTER_CONNECTED type
void callback_function_name(void);

// for the Syncker::Slave::MASTER_DISCONNECTED type
void callback_function_name(const char *reason);

// for the Syncker::Slave::NODE_LOADED type
void callback_function_name(const NodePtr &node);

Arguments

Return value

Number of the last added callback of the specified type, if the callback was added successfully; otherwise, -1.

bool removeCallback ( CALLBACK_INDEX callback, void * func ) #

Removes a given callback from the list of callbacks of the specified type. Callback functions can be used to determine actions to be performed when sending or receiving user messages, as well as when changing settings on the Master or a Slave.

Arguments

Return value

true if the position callback with the given ID was removed successfully; otherwise false.

void clearCallbacks ( CALLBACK_INDEX callback ) #

Clears all added callbacks of the specified type. Callback functions can be used to determine actions to be performed when sending or receiving user messages, as well as when changing settings on the Master or a Slave.

Arguments

Last update: 2020-07-28