package land import "github.com/veandco/go-sdl2/sdl" type Object interface { Create() Update() AddChild(child Object) GetChildren() []Object } type DrawableObject interface { Draw(pen *sdl.Renderer) } type BaseObject struct { Children []Object } func (p *BaseObject) Create() {} func (p *BaseObject) Update() { // Update each child for _, child := range p.Children { child.Update() } } func (p *BaseObject) AddChild(child Object) { p.Children = append(p.Children, child) } func (p *BaseObject) GetChildren() []Object { return p.Children }