git-svn-id: https://reactphysics3d.googlecode.com/svn/trunk@328 92aac97c-a6ce-11dd-a772-7fcde58d38e6
This commit is contained in:
parent
903e543695
commit
99de21bcaa
|
@ -154,7 +154,7 @@ inline void BodyState::setMassInverse(Kilogram massInverse) {
|
|||
}
|
||||
|
||||
// Get the inverse of the inertia tensor
|
||||
Matrix3x3 BodyState::getInertiaTensorInverse() const {
|
||||
inline Matrix3x3 BodyState::getInertiaTensorInverse() const {
|
||||
return inertiaTensorInverse;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,10 +63,10 @@ class RigidBody : public Body {
|
|||
void setInterpolationFactor(double factor); // Set the interpolation factor of the body
|
||||
BodyState getInterpolatedState() const; // Compute and return the interpolated state
|
||||
bool getIsMotionEnabled() const; // Return if the rigid body can move
|
||||
void setIsMotionEnabled(bool isMotionEnabled); // Set the value to true if the body can move
|
||||
void setIsMotionEnabled(bool isMotionEnabled); // Set the value to true if the body can move
|
||||
void setLinearVelocity(const Vector3D& linearVelocity); // Set the linear velocity of the rigid body
|
||||
void updatePreviousBodyState(); // Update the previous body state of the body
|
||||
OBB getOBB() const; // Return the oriented bounding box of the rigid body
|
||||
const OBB* const getOBB() const; // Return the oriented bounding box of the rigid body
|
||||
void update(); // Update the rigid body in order to reflect a change in the body state
|
||||
};
|
||||
|
||||
|
@ -128,8 +128,8 @@ inline void RigidBody::updatePreviousBodyState() {
|
|||
}
|
||||
|
||||
// Return the oriented bounding box of the rigid body
|
||||
inline OBB RigidBody::getOBB() const {
|
||||
return obb;
|
||||
inline const OBB* const RigidBody::getOBB() const {
|
||||
return &obb;
|
||||
}
|
||||
|
||||
// Update the rigid body in order to reflect a change in the body state
|
||||
|
|
|
@ -76,13 +76,13 @@ void CollisionDetection::computeBroadPhase() {
|
|||
RigidBody* rigidBody2 = dynamic_cast<RigidBody*>(*it2);
|
||||
if(rigidBody1 && rigidBody2 && rigidBody1 != rigidBody2) {
|
||||
// Get the oriented bounding boxes of the two bodies
|
||||
OBB obb1 = rigidBody1->getOBB();
|
||||
OBB obb2 = rigidBody2->getOBB();
|
||||
const OBB* obb1 = rigidBody1->getOBB();
|
||||
const OBB* obb2 = rigidBody2->getOBB();
|
||||
|
||||
// Use the broad-phase algorithm to decide if the two bodies can collide
|
||||
if(broadPhaseAlgorithm->testCollisionPair(&obb1, &obb2)) {
|
||||
if(broadPhaseAlgorithm->testCollisionPair(obb1, obb2)) {
|
||||
// If the broad-phase thinks that the two bodies collide, we add the in the possible collision pair list
|
||||
possibleCollisionPairs.push_back(std::pair<const OBB*, const OBB*>(&obb1, &obb2));
|
||||
possibleCollisionPairs.push_back(std::pair<const OBB*, const OBB*>(obb1, obb2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
// Libraries
|
||||
#include "ContactInfo.h"
|
||||
|
||||
using namespace reactphysics3d;
|
||||
|
||||
// Constructor
|
||||
ContactInfo::ContactInfo(const OBB* const obb1, const OBB* const obb2, const Vector3D& normal, double penetrationDepth)
|
||||
: obb1(obb1), obb2(obb2), normal(normal), penetrationDepth(penetrationDepth) {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <algorithm>
|
||||
#include <cfloat>
|
||||
#include <cassert>
|
||||
#include <iostream> // TODO : Delete this
|
||||
|
||||
// We want to use the ReactPhysics3D namespace
|
||||
using namespace reactphysics3d;
|
||||
|
@ -45,10 +46,12 @@ SATAlgorithm::~SATAlgorithm() {
|
|||
// Return true and compute a contact info if the two bounding volume collide.
|
||||
// The method returns false if there is no collision between the two bounding volumes.
|
||||
bool SATAlgorithm::testCollision(const BoundingVolume* const boundingVolume1, const BoundingVolume* const boundingVolume2, ContactInfo*& contactInfo) {
|
||||
|
||||
|
||||
assert(boundingVolume1 != boundingVolume2);
|
||||
|
||||
// If the two bounding volumes are OBB
|
||||
//const OBB* const obb1 = dynamic_cast<const OBB* const>(boundingVolume1);
|
||||
//const OBB* const obb2 = dynamic_cast<const OBB* const>(boundingVolume2);
|
||||
const OBB* const obb1 = dynamic_cast<const OBB* const>(boundingVolume1);
|
||||
const OBB* const obb2 = dynamic_cast<const OBB* const>(boundingVolume2);
|
||||
|
||||
|
@ -72,6 +75,7 @@ bool SATAlgorithm::testCollision(const BoundingVolume* const boundingVolume1, co
|
|||
// normal of OBB 1 and Bj for the jth face normal of OBB 2.
|
||||
bool SATAlgorithm::computeCollisionTest(const OBB* const obb1, const OBB* const obb2, ContactInfo*& contactInfo) const {
|
||||
|
||||
|
||||
double center; // Center of a projection interval
|
||||
double radius1; // Radius of projection interval [min1, max1]
|
||||
double radius2; // Radius of projection interval [min2, max2]
|
||||
|
|
Loading…
Reference in New Issue
Block a user