proto3 initial commit
This commit is contained in:
59
proto3/godot/ai/blackboard.gd
Normal file
59
proto3/godot/ai/blackboard.gd
Normal file
@@ -0,0 +1,59 @@
|
||||
extends Node
|
||||
class_name Blackboard
|
||||
|
||||
var _base_memory: Dictionary #stores global info
|
||||
var _tree_memory: Dictionary #store tree and node info
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
_base_memory = {}
|
||||
_tree_memory = {}
|
||||
|
||||
|
||||
func set(key, value, behavior_tree = null, node_scope = null) -> void:
|
||||
|
||||
var memory := _get_memory(behavior_tree, node_scope)
|
||||
memory[key] = value
|
||||
|
||||
|
||||
func get(key, behavior_tree = null, node_scope = null):
|
||||
|
||||
var memory := _get_memory(behavior_tree, node_scope)
|
||||
|
||||
if memory.has(key):
|
||||
return memory[key]
|
||||
|
||||
return null
|
||||
|
||||
|
||||
func _get_memory(behavior_tree, node_scope) -> Dictionary:
|
||||
|
||||
var memory := _base_memory
|
||||
|
||||
if behavior_tree:
|
||||
memory = _get_tree_memory(behavior_tree)
|
||||
|
||||
if node_scope:
|
||||
memory = _get_node_memory(memory, node_scope)
|
||||
|
||||
return memory
|
||||
|
||||
|
||||
func _get_tree_memory(behavior_tree) -> Dictionary:
|
||||
|
||||
if not _tree_memory.has(behavior_tree):
|
||||
_tree_memory[behavior_tree] = {
|
||||
'nodeMemory':{},
|
||||
'openNodes':[]
|
||||
}
|
||||
|
||||
return _tree_memory[behavior_tree]
|
||||
|
||||
|
||||
func _get_node_memory(tree_memory: Dictionary, node_scope) -> Dictionary:
|
||||
|
||||
var memory: Dictionary = tree_memory['nodeMemory']
|
||||
|
||||
if not memory.has(node_scope):
|
||||
memory[node_scope] = {}
|
||||
return memory[node_scope]
|
||||
Reference in New Issue
Block a user