package coreobjects import rl "github.com/gen2brain/raylib-go/raylib" // An object loaded from the package. Impmiments GameObject interface type DynamicObject struct { Position rl.Vector2 YLevelOffset float32 Textures []*TextureBlock Colliders []*ColliderBlock } // The dynamic objects can contain multiple textures. This struct // represents one of those parts type TextureBlock struct { Texture *rl.Texture2D Offset rl.Vector2 } type ColliderBlock struct { Collider Collider Offset rl.Vector2 } func (base *DynamicObject) Create(SceneManager) { } func (base *DynamicObject) Destroy() { } func (base *DynamicObject) Update() { } func (base *DynamicObject) Draw() { for _, v := range base.Textures { rl.DrawTexture(*v.Texture, int32(base.Position.X + v.Offset.X), int32(base.Position.Y + v.Offset.Y), rl.White) } for _, v := range base.Colliders { v.Collider.Draw() } } func (base *DynamicObject) MoveTo(x float32, y float32) { base.Position = rl.Vector2 { X: x, Y: y } for _, v := range base.Colliders { v.Collider.MoveTo(x + v.Offset.X, y + v.Offset.Y) } } func (base *DynamicObject) Clone() *DynamicObject { var outp = DynamicObject { YLevelOffset: base.YLevelOffset, Position: base.Position, Textures: base.Textures, Colliders: base.cloneColliders(), } return &outp } func (base *DynamicObject) cloneColliders() []*ColliderBlock { var outp = make([]*ColliderBlock, len(base.Colliders)) for i, v := range base.Colliders { outp[i] = &ColliderBlock { Collider: v.Collider.Clone(), Offset: v.Offset, } } return outp } func (base *DynamicObject) GetColliders() []Collider { var outp = make([]Collider, 0, len(base.Colliders)) for _, v := range base.Colliders { outp = append(outp, v.Collider) } return outp } func (base *DynamicObject) GetYIndex() float32 { return base.Position.Y + base.YLevelOffset }