Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion addons/netfox.extras/plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
name="netfox.extras"
description="Game-specific utilities for Netfox"
author="Tamas Galffy and contributors"
version="1.43.4"
version="1.43.5"
script="netfox-extras.gd"
2 changes: 1 addition & 1 deletion addons/netfox.internals/plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
name="netfox.internals"
description="Shared internals for netfox addons"
author="Tamas Galffy and contributors"
version="1.43.4"
version="1.43.5"
script="plugin.gd"
2 changes: 1 addition & 1 deletion addons/netfox.noray/plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
name="netfox.noray"
description="Bulletproof your connectivity with noray integration for netfox"
author="Tamas Galffy and contributors"
version="1.43.4"
version="1.43.5"
script="netfox-noray.gd"
2 changes: 1 addition & 1 deletion addons/netfox/plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
name="netfox"
description="Shared internals for netfox addons"
author="Tamas Galffy and contributors"
version="1.43.4"
version="1.43.5"
script="netfox.gd"
15 changes: 8 additions & 7 deletions addons/netfox/rollback/predictive-synchronizer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@ func _enter_tree() -> void:
func _exit_tree() -> void:
_managed_roots.erase(root)

if root.is_queued_for_deletion():
for node in _sim_nodes:
RollbackSimulationServer.deregister_node(node)
for node in _liveness_nodes:
RollbackLivenessServer.deregister(node)
for subject in _state_properties.get_subjects():
NetworkHistoryServer.deregister(subject)

func _reprocess_settings() -> void:
if not _properties_dirty or Engine.is_editor_hint():
return
Expand All @@ -140,13 +148,6 @@ func add_state(node: Variant, property: String):
func _notification(what: int) -> void:
if what == NOTIFICATION_EDITOR_PRE_SAVE:
update_configuration_warnings()
if what == NOTIFICATION_PREDELETE:
for node in _sim_nodes:
RollbackSimulationServer.deregister_node(node)
for node in _liveness_nodes:
RollbackLivenessServer.deregister(node)
for subject in _state_properties.get_subjects():
NetworkHistoryServer.deregister(subject)

func _get_configuration_warnings() -> PackedStringArray:
if not root:
Expand Down
20 changes: 11 additions & 9 deletions addons/netfox/rollback/rollback-synchronizer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -330,15 +330,6 @@ func _ready() -> void:
func _notification(what: int) -> void:
if what == NOTIFICATION_EDITOR_PRE_SAVE:
update_configuration_warnings()
elif what == NOTIFICATION_PREDELETE:
for node in _sim_nodes + _state_properties.get_subjects() + _input_properties.get_subjects():
RollbackSimulationServer.deregister_node(node)
NetworkSynchronizationServer.deregister(node)
NetworkIdentityServer.deregister_node(node)
NetworkHistoryServer.deregister(node)

for node in _liveness_nodes:
RollbackLivenessServer.deregister(node)

func _get_configuration_warnings() -> PackedStringArray:
if not root:
Expand Down Expand Up @@ -381,6 +372,17 @@ func _enter_tree() -> void:
func _exit_tree() -> void:
_managed_roots.erase(root)

if root.is_queued_for_deletion():
# RBS and its nodes are being freed, time to deregister everything
for node in _sim_nodes + _state_properties.get_subjects() + _input_properties.get_subjects():
RollbackSimulationServer.deregister_node(node)
NetworkSynchronizationServer.deregister(node)
NetworkIdentityServer.deregister_node(node)
NetworkHistoryServer.deregister(node)

for node in _liveness_nodes:
RollbackLivenessServer.deregister(node)

func _reprocess_settings() -> void:
if not _properties_dirty or Engine.is_editor_hint():
return
Expand Down
12 changes: 7 additions & 5 deletions addons/netfox/state-synchronizer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,6 @@ func clear_schema() -> void:
func _notification(what) -> void:
if what == NOTIFICATION_EDITOR_PRE_SAVE:
update_configuration_warnings()
elif what == NOTIFICATION_PREDELETE:
for node in _properties.get_subjects():
NetworkSynchronizationServer.deregister(node)
NetworkHistoryServer.deregister(node)
NetworkIdentityServer.deregister_node(node)

func _get_configuration_warnings() -> PackedStringArray:
if not root:
Expand All @@ -160,6 +155,13 @@ func _enter_tree() -> void:

process_settings.call_deferred()

func _exit_tree() -> void:
if root.is_queued_for_deletion():
for node in _properties.get_subjects():
NetworkSynchronizationServer.deregister(node)
NetworkHistoryServer.deregister(node)
NetworkIdentityServer.deregister_node(node)

func _ready():
# Reprocess authority
# Important if nodes are pre-placed in the scene - node starts as owned by
Expand Down
Loading