package input import "ponger/ecs" type DeviceID int type Event struct { ecs.Event Which DeviceID Dx, Dy float32 JustPressed, JustReleased, IsPressed bool } type Handler interface { Process(ev Event) } func ProcessTree(root any, ev Event) { if inp, ok := root.(Handler); ok { inp.Process(ev) } if g, ok := root.(ecs.IsGameObject); ok { for _, c := range g.GO().Children { if c == nil { continue } ProcessTree(c, ev) } } }