basic ECS spawner

This commit is contained in:
2026-01-15 15:27:48 +01:00
parent 24a781f36a
commit eb737b469c
860 changed files with 58621 additions and 32 deletions

View File

@@ -0,0 +1,37 @@
## Observer that watches C_ObserverHealth component with a query filter
class_name O_HealthObserver
extends Observer
var health_changed_count: int = 0
var health_added_count: int = 0
var health_removed_count: int = 0
var low_health_alerts: Array[Entity] = []
func watch() -> Resource:
return C_ObserverHealth
func match() -> QueryBuilder:
# Only watch entities that have both C_ObserverHealth and C_ObserverTest
return q.with_all([C_ObserverHealth, C_ObserverTest])
func on_component_added(entity: Entity, component: Resource) -> void:
health_added_count += 1
func on_component_removed(entity: Entity, component: Resource) -> void:
health_removed_count += 1
func on_component_changed(
entity: Entity, component: Resource, property: String, new_value: Variant, old_value: Variant
) -> void:
if property == "health":
health_changed_count += 1
# Track entities with low health
if new_value < 30:
if not low_health_alerts.has(entity):
low_health_alerts.append(entity)
func reset() -> void:
health_changed_count = 0
health_added_count = 0
health_removed_count = 0
low_health_alerts.clear()