From a46e7d650896d86c7bade602446ac9539d93396a Mon Sep 17 00:00:00 2001 From: Physcik Date: Mon, 26 Jan 2026 20:40:49 +0500 Subject: Collider registrty --- engine/CoreObjects/DynamicObject.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'engine/CoreObjects/DynamicObject.go') diff --git a/engine/CoreObjects/DynamicObject.go b/engine/CoreObjects/DynamicObject.go index 8c70599..0462ebb 100644 --- a/engine/CoreObjects/DynamicObject.go +++ b/engine/CoreObjects/DynamicObject.go @@ -6,6 +6,7 @@ import rl "github.com/gen2brain/raylib-go/raylib" type DynamicObject struct { Position rl.Vector2 Textures []*TextureBlock + Colliders []*ColliderBlock } // The dynamic objects can contain multiple textures. This struct @@ -15,6 +16,11 @@ type TextureBlock struct { Offset rl.Vector2 } +type ColliderBlock struct { + Collider Collider + Offset rl.Vector2 +} + func (base *DynamicObject) Create(SceneManager) { } @@ -31,12 +37,43 @@ func (base *DynamicObject) Draw() { 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 { 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 +} -- cgit v1.3