generated from krampus/template-godot4
55 lines
1.1 KiB
GDScript
55 lines
1.1 KiB
GDScript
extends Node
|
|
|
|
var _tree_count: int = 0
|
|
var _active_tree_count: int = 0
|
|
var _registered_trees: Array = []
|
|
|
|
|
|
func _enter_tree() -> void:
|
|
Performance.add_custom_monitor("beehave/total_trees", _get_total_trees)
|
|
Performance.add_custom_monitor("beehave/total_enabled_trees", _get_total_enabled_trees)
|
|
|
|
|
|
func register_tree(tree) -> void:
|
|
if _registered_trees.has(tree):
|
|
return
|
|
|
|
_registered_trees.append(tree)
|
|
_tree_count += 1
|
|
|
|
if tree.enabled:
|
|
_active_tree_count += 1
|
|
|
|
tree.tree_enabled.connect(_on_tree_enabled)
|
|
tree.tree_disabled.connect(_on_tree_disabled)
|
|
|
|
|
|
func unregister_tree(tree) -> void:
|
|
if not _registered_trees.has(tree):
|
|
return
|
|
|
|
_registered_trees.erase(tree)
|
|
_tree_count -= 1
|
|
|
|
if tree.enabled:
|
|
_active_tree_count -= 1
|
|
|
|
tree.tree_enabled.disconnect(_on_tree_enabled)
|
|
tree.tree_disabled.disconnect(_on_tree_disabled)
|
|
|
|
|
|
func _get_total_trees() -> int:
|
|
return _tree_count
|
|
|
|
|
|
func _get_total_enabled_trees() -> int:
|
|
return _active_tree_count
|
|
|
|
|
|
func _on_tree_enabled() -> void:
|
|
_active_tree_count += 1
|
|
|
|
|
|
func _on_tree_disabled() -> void:
|
|
_active_tree_count -= 1
|