From a463264a85a030a76053b68e6297e302d3bc528c Mon Sep 17 00:00:00 2001 From: Peter Schaefer Date: Fri, 24 Jun 2016 13:19:26 +0200 Subject: [PATCH] jump ontop of Boars optimized lvl Collision --- Weave/Scene/Boar.cpp | 18 ++++++++++++++++-- Weave/Scene/Level.cpp | 6 +----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Weave/Scene/Boar.cpp b/Weave/Scene/Boar.cpp index bce2cb2..01e557a 100644 --- a/Weave/Scene/Boar.cpp +++ b/Weave/Scene/Boar.cpp @@ -43,11 +43,25 @@ void Boar::collides(SceneObject * _other, btPersistentManifold * _contactManifol int numContacts = _contactManifold->getNumContacts(); //For each contact point in that manifold double pdist = (_contactManifold->getContactPoint(0).getDistance()); + btVector3 ptN = (_contactManifold->getContactPoint(0).m_normalWorldOnB);; for (int j = 0; j < numContacts; j++) { //Get the contact information btManifoldPoint& pt = _contactManifold->getContactPoint(j); - btVector3 ptA = pt.getPositionWorldOnA(); - pdist = min(((double)pt.getDistance()), pdist); + + if (pdist >= pt.getDistance()) + { + pdist = pt.getDistance(); + ptN = pt.m_normalWorldOnB; + } + + + } + + if (ptN.getY() >= .4f) + { + _other->ySpeed = 5; + //BOAR DIE!!! + return; } if (pdist >= .0f) diff --git a/Weave/Scene/Level.cpp b/Weave/Scene/Level.cpp index e72d613..cf9b63d 100644 --- a/Weave/Scene/Level.cpp +++ b/Weave/Scene/Level.cpp @@ -47,16 +47,12 @@ void Level::collides(SceneObject* _other, btPersistentManifold* _contactManifold { //Get the contact information btManifoldPoint& pt = _contactManifold->getContactPoint(j); - btVector3 ptA = pt.getPositionWorldOnA(); - btVector3 ptB = pt.getPositionWorldOnB(); - vec3 ptAg(ptA.getX(), ptA.getY(), ptA.getZ()); - vec3 ptBg(ptB.getX(), ptB.getY(), ptB.getZ()); - //normal = normalize(ptAg - ptBg); pdist = pt.getDistance(); btVector3 ptN = pt.m_normalWorldOnB; normal = vec3(ptN.getX(), ptN.getY(), ptN.getZ()); + _other->yFloorDist = pdist * normal[1]; -- 2.47.3