diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-05-22 14:53:05 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-05-22 14:53:05 +0200 |
commit | c13d26e1fa40ac8d40e1b4f7c72e4c1ef3f6c5e8 (patch) | |
tree | f2860f37c8fce085b7ca2574294ca9d96ac79bd9 /src/common/Collision/Models | |
parent | 703452d28d05e8690ad802b9c7c22e0df6c50d71 (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.cpp | 5 | ||||
-rw-r--r-- | src/common/Collision/Models/GameObjectModel.h | 7 |
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; }; |