From 48215d06a6cc0753a839e58c3403d34f69c250d4 Mon Sep 17 00:00:00 2001 From: ewy Date: Fri, 14 Aug 2026 12:32:05 +0200 Subject: add components in addition to gameobject interfaces --- tree/tree.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'tree') diff --git a/tree/tree.go b/tree/tree.go index d39d296..34d7fa6 100644 --- a/tree/tree.go +++ b/tree/tree.go @@ -7,7 +7,7 @@ import ( "ponger/render" ) -func Process(root ecs.IsGameObject, delta uint64, renderer *sdl.Renderer) error { +func Process(root ecs.IsGameObject, delta events.Delta, renderer *sdl.Renderer) error { evs, err := events.Poll(delta) if err != nil { return err @@ -16,7 +16,7 @@ func Process(root ecs.IsGameObject, delta uint64, renderer *sdl.Renderer) error return nil } -func ParseRecursive(current ecs.IsGameObject, delta uint64, renderer *sdl.Renderer, evs ...any) { +func ParseRecursive(current ecs.IsGameObject, delta events.Delta, renderer *sdl.Renderer, evs ...any) { ParseSingle(current, delta, renderer, evs...) for _, c := range current.GO().Children { if c == nil { @@ -24,9 +24,16 @@ func ParseRecursive(current ecs.IsGameObject, delta uint64, renderer *sdl.Render } ParseSingle(c, delta, renderer, evs...) } + for _, c := range current.GO().Components { + if c == nil { + continue + } + c.Process(delta, current.GO()) + ParseSingle(c, delta, renderer, evs...) + } } -func ParseSingle(obj ecs.IsGameObject, delta uint64, renderer *sdl.Renderer, evs ...any) { +func ParseSingle(obj any, delta events.Delta, renderer *sdl.Renderer, evs ...any) { if impl, ok := obj.(events.WindowChangeHandler); ok { for _, e := range events.OfType[events.WindowChange](evs...) { impl.ProcessWindowChange(e) -- cgit v1.3.1