Replace std::map with btHashMap.

This commit is contained in:
Benelot
2016-10-19 21:56:09 +02:00
parent 453b0f9e29
commit 09d2e9afa7

View File

@@ -14,12 +14,12 @@ subject to the following restrictions:
*/ */
#include "NN3DWalkers.h" #include "NN3DWalkers.h"
#include <map>
#include "btBulletDynamicsCommon.h" #include "btBulletDynamicsCommon.h"
#include "LinearMath/btIDebugDraw.h" #include "LinearMath/btIDebugDraw.h"
#include "LinearMath/btAlignedObjectArray.h" #include "LinearMath/btAlignedObjectArray.h"
#include "LinearMath/btHashMap.h"
class btBroadphaseInterface; class btBroadphaseInterface;
class btCollisionShape; class btCollisionShape;
class btOverlappingPairCache; class btOverlappingPairCache;
@@ -191,7 +191,7 @@ class NNWalker
btRigidBody* m_bodies[BODYPART_COUNT]; btRigidBody* m_bodies[BODYPART_COUNT];
btTransform m_bodyRelativeTransforms[BODYPART_COUNT]; btTransform m_bodyRelativeTransforms[BODYPART_COUNT];
btTypedConstraint* m_joints[JOINT_COUNT]; btTypedConstraint* m_joints[JOINT_COUNT];
std::map<void*,int> m_bodyTouchSensorIndexMap; btHashMap<btHashPtr,int> m_bodyTouchSensorIndexMap;
bool m_touchSensors[BODYPART_COUNT]; bool m_touchSensors[BODYPART_COUNT];
btScalar m_sensoryMotorWeights[BODYPART_COUNT*JOINT_COUNT]; btScalar m_sensoryMotorWeights[BODYPART_COUNT*JOINT_COUNT];
@@ -269,7 +269,7 @@ public:
m_ownerWorld->addRigidBody(m_bodies[0]); m_ownerWorld->addRigidBody(m_bodies[0]);
m_bodyRelativeTransforms[0] = btTransform::getIdentity(); m_bodyRelativeTransforms[0] = btTransform::getIdentity();
m_bodies[0]->setUserPointer(this); m_bodies[0]->setUserPointer(this);
m_bodyTouchSensorIndexMap.insert(std::pair<void*,int>(m_bodies[0], 0)); m_bodyTouchSensorIndexMap.insert(btHashPtr(m_bodies[0]), 0);
btHingeConstraint* hingeC; btHingeConstraint* hingeC;
//btConeTwistConstraint* coneC; //btConeTwistConstraint* coneC;
@@ -294,7 +294,7 @@ public:
m_bodies[1+2*i] = localCreateRigidBody(btScalar(1.), bodyOffset*transform, m_shapes[1+2*i]); m_bodies[1+2*i] = localCreateRigidBody(btScalar(1.), bodyOffset*transform, m_shapes[1+2*i]);
m_bodyRelativeTransforms[1+2*i] = transform; m_bodyRelativeTransforms[1+2*i] = transform;
m_bodies[1+2*i]->setUserPointer(this); m_bodies[1+2*i]->setUserPointer(this);
m_bodyTouchSensorIndexMap.insert(std::pair<void*,int>(m_bodies[1+2*i],1+2*i)); m_bodyTouchSensorIndexMap.insert(btHashPtr(m_bodies[1+2*i]),1+2*i);
// shin // shin
transform.setIdentity(); transform.setIdentity();
@@ -302,7 +302,7 @@ public:
m_bodies[2+2*i] = localCreateRigidBody(btScalar(1.), bodyOffset*transform, m_shapes[2+2*i]); m_bodies[2+2*i] = localCreateRigidBody(btScalar(1.), bodyOffset*transform, m_shapes[2+2*i]);
m_bodyRelativeTransforms[2+2*i] = transform; m_bodyRelativeTransforms[2+2*i] = transform;
m_bodies[2+2*i]->setUserPointer(this); m_bodies[2+2*i]->setUserPointer(this);
m_bodyTouchSensorIndexMap.insert(std::pair<void*,int>(m_bodies[2+2*i],2+2*i)); m_bodyTouchSensorIndexMap.insert(btHashPtr(m_bodies[2+2*i]),2+2*i);
// hip joints // hip joints
localA.setIdentity(); localB.setIdentity(); localA.setIdentity(); localB.setIdentity();
@@ -383,7 +383,7 @@ public:
} }
void setTouchSensor(void* bodyPointer){ void setTouchSensor(void* bodyPointer){
m_touchSensors[m_bodyTouchSensorIndexMap.at(bodyPointer)] = true; m_touchSensors[*m_bodyTouchSensorIndexMap.find(btHashPtr(bodyPointer))] = true;
} }
void clearTouchSensors(){ void clearTouchSensors(){