summaryrefslogtreecommitdiff
path: root/tree
diff options
context:
space:
mode:
authorewy <ewy0@protonmail.com>2026-08-14 12:32:05 +0200
committerewy <ewy0@protonmail.com>2026-08-14 12:32:05 +0200
commit48215d06a6cc0753a839e58c3403d34f69c250d4 (patch)
tree3c391d8edc2e52818072a48c7e36abefeb3b7671 /tree
parentbc3f852ea670e206fa3facc736a230f6b9d23920 (diff)
add components in addition to gameobject interfacesHEADmaster
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)