Skip to content

Commit d9f63a0

Browse files
committed
#20 : BTNode : connect to signal only if not already done
Corner case when you try to switch node type : _init is called twice
1 parent 8e1dc3b commit d9f63a0

File tree

1 file changed

+9
-6
lines changed
  • addons/yet_another_behavior_tree/src/Nodes

1 file changed

+9
-6
lines changed

addons/yet_another_behavior_tree/src/Nodes/BTNode.gd

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ var _children:Array[BTNode] = []
2929
func _init() -> void:
3030
super._init()
3131
if _is_in_editor:
32-
child_entered_tree.connect(_update_configuration_warnings_1)
33-
child_exiting_tree.connect(_update_configuration_warnings_1)
34-
tree_entered.connect(_update_configuration_warnings_0)
35-
tree_exited.connect(_update_configuration_warnings_0)
36-
child_entered_tree.connect(_update_cached_children)
37-
child_exiting_tree.connect(_update_cached_children)
32+
_connect_signal_if_needed(child_entered_tree, _update_configuration_warnings_1)
33+
_connect_signal_if_needed(child_exiting_tree, _update_configuration_warnings_1)
34+
_connect_signal_if_needed(tree_entered, _update_configuration_warnings_0)
35+
_connect_signal_if_needed(tree_exited, _update_configuration_warnings_0)
36+
_connect_signal_if_needed(child_entered_tree, _update_cached_children)
37+
_connect_signal_if_needed(child_exiting_tree, _update_cached_children)
3838

3939
func _ready() -> void:
4040
if _is_in_editor:
@@ -116,3 +116,6 @@ func _stop(actor:Node2D, blackboard:BTBlackboard) -> void:
116116
func _exit(blackboard:BTBlackboard) -> void:
117117
pass
118118

119+
func _connect_signal_if_needed(sig:Signal, callable:Callable) -> void:
120+
if not sig.is_connected(callable):
121+
sig.connect(callable)

0 commit comments

Comments
 (0)