diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2026-01-26 20:40:49 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2026-01-26 20:40:49 +0500 |
| commit | a46e7d650896d86c7bade602446ac9539d93396a (patch) | |
| tree | 56787d8625aa8f66a002dd8eaa97541d83d96b4e /engine/CoreObjects/DynamicObject.go | |
| parent | 3ba197732d13d84eca0d706218b38d4f84cecba9 (diff) | |
Collider registrty
Diffstat (limited to 'engine/CoreObjects/DynamicObject.go')
| -rw-r--r-- | engine/CoreObjects/DynamicObject.go | 37 |
1 files changed, 37 insertions, 0 deletions
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 +} |
