From 16d27f40b9369737fbb8bf3b0893f1e6d10a9433 Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Thu, 3 Nov 2016 18:06:45 +0100 Subject: [PATCH] Remove bodies pointer from ContactPoint --- src/collision/CollisionDetection.cpp | 2 ++ src/constraint/ContactPoint.cpp | 3 +-- src/constraint/ContactPoint.h | 22 ---------------------- src/engine/ContactSolver.cpp | 4 ++-- 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/src/collision/CollisionDetection.cpp b/src/collision/CollisionDetection.cpp index c3caa97a..2fada228 100644 --- a/src/collision/CollisionDetection.cpp +++ b/src/collision/CollisionDetection.cpp @@ -433,6 +433,8 @@ void CollisionDetection::notifyContact(OverlappingPair* overlappingPair, const C void CollisionDetection::createContact(OverlappingPair* overlappingPair, const ContactPointInfo& contactInfo) { + PROFILE("CollisionDetection::createContact()"); + // Create a new contact ContactPoint* contact = new (mWorld->mPoolAllocator.allocate(sizeof(ContactPoint))) ContactPoint(contactInfo); diff --git a/src/constraint/ContactPoint.cpp b/src/constraint/ContactPoint.cpp index c0d567ea..7756d68b 100644 --- a/src/constraint/ContactPoint.cpp +++ b/src/constraint/ContactPoint.cpp @@ -32,8 +32,7 @@ using namespace std; // Constructor ContactPoint::ContactPoint(const ContactPointInfo& contactInfo) - : mBody1(contactInfo.shape1->getBody()), mBody2(contactInfo.shape2->getBody()), - mNormal(contactInfo.normal), + : mNormal(contactInfo.normal), mPenetrationDepth(contactInfo.penetrationDepth), mLocalPointOnBody1(contactInfo.localPoint1), mLocalPointOnBody2(contactInfo.localPoint2), diff --git a/src/constraint/ContactPoint.h b/src/constraint/ContactPoint.h index 18be17b0..c15dbafa 100644 --- a/src/constraint/ContactPoint.h +++ b/src/constraint/ContactPoint.h @@ -101,12 +101,6 @@ class ContactPoint { // -------------------- Attributes -------------------- // - /// First rigid body of the contact - CollisionBody* mBody1; - - /// Second rigid body of the contact - CollisionBody* mBody2; - /// Normalized normal vector of the contact (from body1 toward body2) in world space const Vector3 mNormal; @@ -147,12 +141,6 @@ class ContactPoint { /// Deleted assignment operator ContactPoint& operator=(const ContactPoint& contact) = delete; - /// Return the reference to the body 1 - CollisionBody* getBody1() const; - - /// Return the reference to the body 2 - CollisionBody* getBody2() const; - /// Return the normal vector of the contact Vector3 getNormal() const; @@ -196,16 +184,6 @@ class ContactPoint { size_t getSizeInBytes() const; }; -// Return the reference to the body 1 -inline CollisionBody* ContactPoint::getBody1() const { - return mBody1; -} - -// Return the reference to the body 2 -inline CollisionBody* ContactPoint::getBody2() const { - return mBody2; -} - // Return the normal vector of the contact inline Vector3 ContactPoint::getNormal() const { return mNormal; diff --git a/src/engine/ContactSolver.cpp b/src/engine/ContactSolver.cpp index 5d61243a..d5825d5c 100644 --- a/src/engine/ContactSolver.cpp +++ b/src/engine/ContactSolver.cpp @@ -115,8 +115,8 @@ void ContactSolver::initializeForIsland(Island* island) { assert(externalManifold->getNbContactPoints() > 0); // Get the two bodies of the contact - RigidBody* body1 = static_cast(externalManifold->getContactPoint(0)->getBody1()); - RigidBody* body2 = static_cast(externalManifold->getContactPoint(0)->getBody2()); + RigidBody* body1 = static_cast(externalManifold->getBody1()); + RigidBody* body2 = static_cast(externalManifold->getBody2()); assert(body1 != nullptr); assert(body2 != nullptr);