basic ECS spawner
This commit is contained in:
34
addons/gecs/lib/system_group.gd
Normal file
34
addons/gecs/lib/system_group.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
## This is a node that automatically fills in the [member System.group] property
|
||||
## of any [System] that is a child of this node.
|
||||
## Allowing you to visually organize your systems in the scene tree
|
||||
## without having to manually set the group property on each [System].
|
||||
## Add this node to your scene tree and make [System]s children of it.
|
||||
## The name of the SystemGroup node will be set to [member System.group] for
|
||||
## all child [System]s.
|
||||
@tool
|
||||
@icon('res://addons/gecs/assets/system_folder.svg')
|
||||
class_name SystemGroup
|
||||
extends Node
|
||||
|
||||
## Put the [System]s in the group based on the [member Node.name] of the [SystemGroup]
|
||||
@export var auto_group := true
|
||||
|
||||
|
||||
## called when the node enters the scene tree for the first time.
|
||||
func _enter_tree() -> void:
|
||||
# Connect signals
|
||||
if not child_entered_tree.is_connected(_on_child_entered_tree):
|
||||
child_entered_tree.connect(_on_child_entered_tree)
|
||||
|
||||
# Set the group for all child systems
|
||||
if auto_group:
|
||||
for child in get_children():
|
||||
if child is System:
|
||||
child.group = name
|
||||
|
||||
|
||||
## Anytime a child enters the tree, set its group if it's a System
|
||||
func _on_child_entered_tree(node: Node) -> void:
|
||||
if auto_group:
|
||||
if node is System:
|
||||
node.group = name
|
||||
Reference in New Issue
Block a user