From af8e1242762e4446ea5828cbf61d20c8f0ddd85b Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 26 Nov 2025 13:47:45 +0200 Subject: [PATCH] vehicles can't obstruct their own frames --- gameObjectFrame.h | 7 ++++++- gameObjectFrameController.cpp | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gameObjectFrame.h b/gameObjectFrame.h index 3ea600b..5a249d2 100644 --- a/gameObjectFrame.h +++ b/gameObjectFrame.h @@ -10,7 +10,10 @@ namespace battleship{ struct GameObjectFrame : public GameObject{ enum Status{PLACEABLE, NOT_PLACEABLE, PLACED}; - GameObjectFrame(int i, GameObject::Type t, vb01::Vector3 pos = vb01::Vector3::VEC_ZERO, vb01::Quaternion rot = vb01::Quaternion::QUAT_W) : GameObject(t, i, nullptr, pos, rot) { + GameObjectFrame(int i, GameObject::Type t, Unit *ou = nullptr, vb01::Vector3 pos = vb01::Vector3::VEC_ZERO, vb01::Quaternion rot = vb01::Quaternion::QUAT_W) : + originalUnit(ou), + GameObject(t, i, nullptr, pos, rot) + { initModel(false); initProperties(); placeAt(pos); @@ -18,8 +21,10 @@ namespace battleship{ } ~GameObjectFrame(){} void destroy(){destroyModel();} + inline Unit* getOriginalUnit(){return originalUnit;} Status status; + Unit *originalUnit = nullptr; }; } diff --git a/gameObjectFrameController.cpp b/gameObjectFrameController.cpp index ecabcca..c0230f9 100644 --- a/gameObjectFrameController.cpp +++ b/gameObjectFrameController.cpp @@ -53,7 +53,7 @@ namespace battleship{ buildDir = gameObjectFrames[1].getModel()->getPosition() - gameObjectFrames[0].getModel()->getPosition(); Vector3 pos = paintSelectRowStart + buildDir.norm() * hypothenuse * gameObjectFrames.size(); - addGameObjectFrame(GameObjectFrame(structureId, GameObject::Type::UNIT, pos)); + addGameObjectFrame(GameObjectFrame(structureId, GameObject::Type::UNIT, nullptr, pos)); } } @@ -104,6 +104,8 @@ namespace battleship{ } for(Unit *unit : units){ + if(unit == s.getOriginalUnit()) continue; + Vector3 gm1Pos = s.getPos(); Vector3 gm1Dir = s.getDirVec(); gm1Dir = Vector3(gm1Dir.x, 0, gm1Dir.z).norm();