summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-26 21:20:09 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-26 21:20:09 +0500
commitd5b1ff7f6031ed191e16625b1ddb8ac3fd0a33c7 (patch)
treebd38d60f59ce94bfe80e7a527d83dcb558ea4bfc /engine
parentca2c18bf79388561e44b232e6c050412ae87fe69 (diff)
Movement fix
Diffstat (limited to 'engine')
-rw-r--r--engine/Components/Player.go2
-rw-r--r--engine/Components/World.go5
-rw-r--r--engine/CoreObjects/Collider.go13
-rw-r--r--engine/CoreObjects/OverlayScene.go3
4 files changed, 15 insertions, 8 deletions
diff --git a/engine/Components/Player.go b/engine/Components/Player.go
index 0b01184..9c11b80 100644
--- a/engine/Components/Player.go
+++ b/engine/Components/Player.go
@@ -49,7 +49,7 @@ func (base *Player) Destroy() {
func (base *Player) Move(delta rl.Vector2) {
var newLocation = rl.Vector2Add(base.Position, delta)
if !base.Collider.CanMove(base.ParentScene.GetStaticColliders(),
- newLocation.X, newLocation.Y) {
+ delta.X, delta.Y) {
return
}
base.Collider.MoveTo(newLocation.X, newLocation.Y)
diff --git a/engine/Components/World.go b/engine/Components/World.go
index 397cbb7..3f7a0d4 100644
--- a/engine/Components/World.go
+++ b/engine/Components/World.go
@@ -44,6 +44,11 @@ func (base *World) handleZoom() {
func (base *World) collectStaticColliders() {
base.staticColliders = make([]*coreobjects.Collider, 0)
+ for _, obj := range base.StaticObjects {
+ for _, v := range obj.GetColliders() {
+ base.staticColliders = append(base.staticColliders, &v)
+ }
+ }
}
func (base *World) GetStaticColliders() []*coreobjects.Collider {
diff --git a/engine/CoreObjects/Collider.go b/engine/CoreObjects/Collider.go
index 6603058..8e9f472 100644
--- a/engine/CoreObjects/Collider.go
+++ b/engine/CoreObjects/Collider.go
@@ -3,6 +3,7 @@ package coreobjects
import (
"image/color"
+ settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings"
rl "github.com/gen2brain/raylib-go/raylib"
)
@@ -35,13 +36,7 @@ func (base *BoxCollider) Init(x float32, y float32, height float32, width float3
}
func (base *BoxCollider) Intersects(x float32, y float32) bool {
- if base.Location.X < x || base.Location.Y < y {
- return false
- }
- if base.Location.X + base.Location.Width > x || base.Location.Y + base.Location.Height > y {
- return false
- }
- return true
+ return rl.CheckCollisionPointRec(rl.Vector2 { X: x, Y: y }, base.Location)
}
func (base *BoxCollider) Move(dx float32, dy float32) {
@@ -61,6 +56,9 @@ func (base *BoxCollider) MoveIfPossible(colliders []*Collider, dx float32, dy fl
}
func (base *BoxCollider) Draw() {
+ if !settings.State.DrawColliders {
+ return
+ }
rl.DrawRectangle(base.Location.ToInt32().X,
base.Location.ToInt32().Y,
base.Location.ToInt32().Width,
@@ -73,6 +71,7 @@ func (base *BoxCollider) CanMove(colliders []*Collider, dx float32, dy float32)
var y = base.Location.Y + dy
var width = base.Location.Width
var height = base.Location.Height
+
// TODO: optimise
for _, v := range colliders {
if (*v).Intersects(x, y) ||
diff --git a/engine/CoreObjects/OverlayScene.go b/engine/CoreObjects/OverlayScene.go
index 5c43e11..a15fd17 100644
--- a/engine/CoreObjects/OverlayScene.go
+++ b/engine/CoreObjects/OverlayScene.go
@@ -19,6 +19,9 @@ func (base *OveralyScene) Destroy() {
func (base *OveralyScene) Update() {
base.FPS.Update()
+ if rl.IsKeyPressed(rl.KeyF7) {
+ settings.State.DrawColliders = !settings.State.DrawColliders
+ }
}
func (base *OveralyScene) Draw() {