summaryrefslogtreecommitdiff
path: root/tree
diff options
context:
space:
mode:
Diffstat (limited to 'tree')
-rw-r--r--tree/tree.go13
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)