From ef6d2a624bc2e2225c29c16acc893e845591f95d Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 21 Feb 2014 16:24:40 -0800 Subject: [PATCH] helper methods to rotate/translate CollisionInfo --- libraries/shared/src/CollisionInfo.cpp | 12 ++++++++++++ libraries/shared/src/CollisionInfo.h | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/libraries/shared/src/CollisionInfo.cpp b/libraries/shared/src/CollisionInfo.cpp index 5d74d591c6..de233d9420 100644 --- a/libraries/shared/src/CollisionInfo.cpp +++ b/libraries/shared/src/CollisionInfo.cpp @@ -8,6 +8,18 @@ #include "CollisionInfo.h" +void CollisionInfo::rotateThenTranslate(const glm::quat& rotation, const glm::vec3& translation) { + _contactPoint = translation + rotation * _contactPoint; + _penetration = rotation * _penetration; + _addedVelocity = rotation * _addedVelocity; +} + +void CollisionInfo::translateThenRotate(const glm::vec3& translation, const glm::quat& rotation) { + _contactPoint = rotation * (_contactPoint + translation); + _penetration = rotation * _penetration; + _addedVelocity = rotation * _addedVelocity; +} + CollisionList::CollisionList(int maxSize) : _maxSize(maxSize), _size(0) { diff --git a/libraries/shared/src/CollisionInfo.h b/libraries/shared/src/CollisionInfo.h index acd127435c..b71d67e532 100644 --- a/libraries/shared/src/CollisionInfo.h +++ b/libraries/shared/src/CollisionInfo.h @@ -10,6 +10,7 @@ #define __hifi__CollisionInfo__ #include +#include #include @@ -55,6 +56,12 @@ public: ~CollisionInfo() {} + /// Rotate and translate the details. + void rotateThenTranslate(const glm::quat& rotation, const glm::vec3& translation); + + /// Translate then rotate the details + void translateThenRotate(const glm::vec3& translation, const glm::quat& rotation); + qint32 _type; // type of Collision (will determine what is supposed to be in _data and _flags) void* _data; // pointer to user supplied data quint32 _flags; // 32 bits for whatever