MultiplayerSynchronizer
Synchronizes properties from the multiplayer authority to the remote peers.
Description
By default, MultiplayerSynchronizer synchronizes configured properties to all peers.
Visibility can be handled directly with set_visibility_for or as-needed with add_visibility_filter and update_visibility.
MultiplayerSpawners will handle nodes according to visibility of synchronizers as long as the node at root_path was spawned by one.
Internally, MultiplayerSynchronizer uses MultiplayerAPI.object_configuration_add to notify synchronization start passing the Node at root_path as the object
and itself as the configuration
, and uses MultiplayerAPI.object_configuration_remove to notify synchronization end in a similar way.
Note: Synchronization is not supported for Object type properties, like Resource. Properties that are unique to each peer, like the instance IDs of Objects (see Object.get_instance_id) or RIDs, will also not work in synchronization.
Properties
| ||
| ||
| ||
| ||
|
Methods
void | add_visibility_filter ( Callable filter ) |
get_visibility_for ( int peer ) const | |
void | remove_visibility_filter ( Callable filter ) |
void | set_visibility_for ( int peer, bool visible ) |
void | update_visibility ( int for_peer=0 ) |
Signals
delta_synchronized ( )
Emitted when a new delta synchronization state is received by this synchronizer after the properties have been updated.
synchronized ( )
Emitted when a new synchronization state is received by this synchronizer after the properties have been updated.
visibility_changed ( int for_peer )
Emitted when visibility of for_peer
is updated. See update_visibility.
Enumerations
enum VisibilityUpdateMode:
VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0
Visibility filters are updated during process frames (see Node.NOTIFICATION_INTERNAL_PROCESS).
VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1
Visibility filters are updated during physics frames (see Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2
Visibility filters are not updated automatically, and must be updated manually by calling update_visibility.
Property Descriptions
float delta_interval = 0.0
Time interval between delta synchronizations. When set to 0.0
(the default), delta synchronizations happen every network process frame.
bool public_visibility = true
Whether synchronization should be visible to all peers by default. See set_visibility_for and add_visibility_filter for ways of configuring fine-grained visibility options.
SceneReplicationConfig replication_config
void set_replication_config ( SceneReplicationConfig value )
SceneReplicationConfig get_replication_config ( )
Resource containing which properties to synchronize.
float replication_interval = 0.0
Time interval between synchronizations. When set to 0.0
(the default), synchronizations happen every network process frame.
NodePath root_path = NodePath("..")
Node path that replicated properties are relative to.
If root_path was spawned by a MultiplayerSpawner, the node will be also be spawned and despawned based on this synchronizer visibility options.
VisibilityUpdateMode visibility_update_mode = 0
void set_visibility_update_mode ( VisibilityUpdateMode value )
VisibilityUpdateMode get_visibility_update_mode ( )
Specifies when visibility filters are updated (see VisibilityUpdateMode for options).
Method Descriptions
void add_visibility_filter ( Callable filter )
Adds a peer visibility filter for this synchronizer.
filter
should take a peer ID int and return a bool.
bool get_visibility_for ( int peer ) const
Queries the current visibility for peer peer
.
void remove_visibility_filter ( Callable filter )
Removes a peer visibility filter from this synchronizer.
void set_visibility_for ( int peer, bool visible )
Sets the visibility of peer
to visible
. If peer
is 0
, the value of public_visibility will be updated instead.
void update_visibility ( int for_peer=0 )
Updates the visibility of for_peer
according to visibility filters. If for_peer
is 0
(the default), all peers’ visibilties are updated.
© Copyright 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision 53e837c6
.
Built with Sphinx using a theme provided by Read the Docs.