From: Peter Schaefer Date: Fri, 24 Jun 2016 11:19:26 +0000 (+0200) Subject: jump ontop of Boars X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=a463264a85a030a76053b68e6297e302d3bc528c;p=cgue_weave.git jump ontop of Boars optimized lvl Collision --- 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];