diff options
Diffstat (limited to 'tree')
| -rw-r--r-- | tree/tree.go | 13 |
1 files changed, 10 insertions, 3 deletions
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) |
