MultiplayerSynchronizer
Sincronizza le proprietà dall'autorità multigiocatore ai peer remoti.
Descrizione
Per impostazione predefinita, MultiplayerSynchronizer sincronizza le proprietà configurate con tutti i peer.
La visibilità può essere gestita direttamente con set_visibility_for() o, se necessario, con add_visibility_filter() e update_visibility().
MultiplayerSpawner gestirà i nodi in base alla visibilità dei sincronizzatori, purché il nodo in root_path sia stato generato da uno.
Internamente, MultiplayerSynchronizer utilizza MultiplayerAPI.object_configuration_add() per notificare l'inizio della sincronizzazione passando il Node in root_path come object e se stesso come configuration, e utilizza MultiplayerAPI.object_configuration_remove() per notificare la fine della sincronizzazione in modo simile.
Nota: La sincronizzazione non è supportata per le proprietà di tipo Object, come Resource. Anche le proprietà univoche per ogni peer, come gli ID istanza di Object (vedi Object.get_instance_id()) o RID, non funzioneranno nella sincronizzazione.
Proprietà
|
||
|
||
|
||
|
||
|
Metodi
void |
add_visibility_filter(filter: Callable) |
get_visibility_for(peer: int) const |
|
void |
remove_visibility_filter(filter: Callable) |
void |
set_visibility_for(peer: int, visible: bool) |
void |
update_visibility(for_peer: int = 0) |
Segnali
delta_synchronized() 🔗
Emesso quando questo sincronizzatore riceve un nuovo stato di sincronizzazione delta dopo l'aggiornamento delle proprietà.
synchronized() 🔗
Emesso quando questo sincronizzatore riceve un nuovo stato di sincronizzazione dopo l'aggiornamento delle proprietà.
visibility_changed(for_peer: int) 🔗
Emesso quando la visibilità del peer for_peer viene aggiornata. Vedi update_visibility().
Enumerazioni
enum VisibilityUpdateMode: 🔗
VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0
I filtri di visibilità sono aggiornati durante i frame di processo (vedi Node.NOTIFICATION_INTERNAL_PROCESS).
VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1
I filtri di visibilità sono aggiornati durante i frame di fisica (vedi Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2
I filtri di visibilità non sono aggiornati automaticamente, ma devono essere aggiornati manualmente chiamando update_visibility().
Descrizioni delle proprietà
Intervallo di tempo tra sincronizzazioni delta. Usato quando la replicazione è impostata su SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE. Se impostato su 0.0 (il valore predefinito), le sincronizzazioni delta avvengono a ogni frame di processo di rete.
bool public_visibility = true 🔗
Se la sincronizzazione deve essere visibile a tutti i peer come predefinito. Vedi set_visibility_for() e add_visibility_filter() per configurare le opzioni di visibilità più precisamente.
SceneReplicationConfig replication_config 🔗
void set_replication_config(value: SceneReplicationConfig)
SceneReplicationConfig get_replication_config()
Risorsa contenente le proprietà da sincronizzare.
float replication_interval = 0.0 🔗
Intervallo di tempo tra le sincronizzazioni. Usato quando la replicazione è impostata su SceneReplicationConfig.REPLICATION_MODE_ALWAYS. Se impostato su 0.0 (il valore predefinito), le sincronizzazioni avvengono a ogni frame di processo di rete.
NodePath root_path = NodePath("..") 🔗
Percorso di nodo a cui sono relative le proprietà replicate.
Se root_path è stato generato da un MultiplayerSpawner, il nodo sarà generato e eliminato in base alle opzioni di visibilità di questo sincronizzatore.
VisibilityUpdateMode visibility_update_mode = 0 🔗
void set_visibility_update_mode(value: VisibilityUpdateMode)
VisibilityUpdateMode get_visibility_update_mode()
Specifica quando i filtri di visibilità vengono aggiornati.
Descrizioni dei metodi
void add_visibility_filter(filter: Callable) 🔗
Aggiunge un filtro di visibilità peer per questo sincronizzatore.
filter dovrebbe accettare un ID peer int e restituire un bool.
bool get_visibility_for(peer: int) const 🔗
Richiede la visibilità attuale per il peer peer.
void remove_visibility_filter(filter: Callable) 🔗
Rimuove un filtro di visibilità peer da questo sincronizzatore.
void set_visibility_for(peer: int, visible: bool) 🔗
Imposta la visibilità di peer su visible. Se peer è 0, verrà aggiornato il valore di public_visibility.
void update_visibility(for_peer: int = 0) 🔗
Aggiorna la visibilità di for_peer in base ai filtri di visibilità. Se for_peer è 0 (il valore predefinito), vengono aggiornate le visibilità di tutti i peer.