Skip to content

Commit 244f7ca

Browse files
committed
Fix #9 : BTBlackboard hold weak references to nodes (and only nodes)
1 parent 9706e70 commit 244f7ca

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

addons/yet_another_behavior_tree/plugin.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="Yet Another Behavior Tree"
44
description="A Behavior Tree implementation for Godot Engine"
55
author="Adrien Quillet"
6-
version="1.1.1"
6+
version="1.1.2"
77
script="yet_another_behavior_tree.gd"

addons/yet_another_behavior_tree/src/Blackboard/BTBlackboard.gd

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,21 @@ func get_delta() -> float:
3838
return get_data("delta")
3939

4040
func has_data(key:Variant) -> bool:
41-
return _execution_data.has(key)
41+
return get_data(key) != null
4242

4343
func get_data(key:Variant, default_value:Variant = null) -> Variant:
44-
return _execution_data.get(key, default_value)
44+
var result:Variant = _execution_data.get(key, default_value)
45+
return result.get_ref() if result is WeakRef else result
4546

4647
func set_data(key:Variant, value:Variant) -> Variant:
47-
var old_value = _execution_data[key] if _execution_data.has(key) else null
48-
_execution_data[key] = value
49-
return old_value
48+
var old_value:Variant = _execution_data[key] if _execution_data.has(key) else null
49+
_execution_data[key] = weakref(value) if value is Node else value
50+
return old_value.get_ref() if old_value is WeakRef else old_value
5051

5152
func delete_data(key:Variant) -> Variant:
5253
var old_value = _execution_data[key] if _execution_data.has(key) else null
5354
_execution_data.erase(key)
54-
return old_value
55+
return old_value.get_ref() if old_value is WeakRef else old_value
5556

5657
#------------------------------------------
5758
# Fonctions privées

0 commit comments

Comments
 (0)