aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Models
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-05-22 14:53:05 +0200
committerShauren <shauren.trinity@gmail.com>2022-05-22 14:53:05 +0200
commitc13d26e1fa40ac8d40e1b4f7c72e4c1ef3f6c5e8 (patch)
treef2860f37c8fce085b7ca2574294ca9d96ac79bd9 /src/common/Collision/Models
parent703452d28d05e8690ad802b9c7c22e0df6c50d71 (diff)
Core/GameObjects: Use all axis rotations for gameobject model collision, not just orientation
Diffstat (limited to 'src/common/Collision/Models')
-rw-r--r--src/common/Collision/Models/GameObjectModel.cpp5
-rw-r--r--src/common/Collision/Models/GameObjectModel.h7
2 files changed, 9 insertions, 3 deletions
diff --git a/src/common/Collision/Models/GameObjectModel.cpp b/src/common/Collision/Models/GameObjectModel.cpp
index bcbfed28f32..5ef59a727ea 100644
--- a/src/common/Collision/Models/GameObjectModel.cpp
+++ b/src/common/Collision/Models/GameObjectModel.cpp
@@ -23,6 +23,7 @@
#include "Log.h"
#include "MapTree.h"
#include "Timer.h"
+#include <G3D/Quat.h>
using G3D::Vector3;
using G3D::Ray;
@@ -124,7 +125,7 @@ bool GameObjectModel::initialize(std::unique_ptr<GameObjectModelOwnerBase> model
iScale = modelOwner->GetScale();
iInvScale = 1.f / iScale;
- G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(modelOwner->GetOrientation(), 0, 0);
+ G3D::Matrix3 iRotation = modelOwner->GetRotation().toRotationMatrix();
iInvRot = iRotation.inverse();
// transform bounding box:
mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale);
@@ -275,7 +276,7 @@ bool GameObjectModel::UpdatePosition()
iPos = owner->GetPosition();
- G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(owner->GetOrientation(), 0, 0);
+ G3D::Matrix3 iRotation = owner->GetRotation().toRotationMatrix();
iInvRot = iRotation.inverse();
// transform bounding box:
mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale);
diff --git a/src/common/Collision/Models/GameObjectModel.h b/src/common/Collision/Models/GameObjectModel.h
index c10a8bfdea2..a8a5c6fc5e0 100644
--- a/src/common/Collision/Models/GameObjectModel.h
+++ b/src/common/Collision/Models/GameObjectModel.h
@@ -26,6 +26,11 @@
#include "Define.h"
#include <memory>
+namespace G3D
+{
+class Quat;
+}
+
namespace VMAP
{
class WorldModel;
@@ -48,7 +53,7 @@ public:
virtual uint8 GetNameSetId() const = 0;
virtual bool IsInPhase(PhaseShift const& /*phaseShift*/) const = 0;
virtual G3D::Vector3 GetPosition() const = 0;
- virtual float GetOrientation() const = 0;
+ virtual G3D::Quat GetRotation() const = 0;
virtual float GetScale() const = 0;
virtual void DebugVisualizeCorner(G3D::Vector3 const& /*corner*/) const = 0;
};