basic ECS spawner
This commit is contained in:
31
addons/gecs/tests/systems/o_test_a.gd
Normal file
31
addons/gecs/tests/systems/o_test_a.gd
Normal file
@@ -0,0 +1,31 @@
|
||||
## This system runs when an entity that is not dead and has it's transform component changed
|
||||
## This is a simple example of a reactive system that updates the entity's transform ONLY when the transform component changes if it's not dead
|
||||
class_name TestAObserver
|
||||
extends Observer
|
||||
|
||||
|
||||
var event_count := 0
|
||||
var added_count := 0
|
||||
|
||||
|
||||
## The component to watch for changes
|
||||
func watch() -> Resource:
|
||||
return C_TestA
|
||||
|
||||
|
||||
# What the entity needs to match for the system to run
|
||||
func match() -> QueryBuilder:
|
||||
# The query the entity needs to match
|
||||
return ECS.world.query.with_none([C_TestB])
|
||||
|
||||
|
||||
# What to do when a property on C_Transform just changed on an entity that matches the query
|
||||
func on_component_changed(
|
||||
entity: Entity, component: Resource, property: String, old_value: Variant, new_value: Variant
|
||||
) -> void:
|
||||
# Set the transfrom from the component to the entity
|
||||
print("We changed!", entity.name, component.value)
|
||||
event_count += 1
|
||||
|
||||
func on_component_added(entity: Entity, component: Resource) -> void:
|
||||
added_count += 1
|
||||
Reference in New Issue
Block a user