예제 #1
0
PhysicsEngine::PhysicsEngine(const glm::vec3& offset) :
        _originOffset(offset),
        _characterController(nullptr) {
    // build table of masks with their group as the key
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_DEFAULT), COLLISION_MASK_DEFAULT);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_STATIC), COLLISION_MASK_STATIC);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_KINEMATIC), COLLISION_MASK_KINEMATIC);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_DEBRIS), COLLISION_MASK_DEBRIS);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_TRIGGER), COLLISION_MASK_TRIGGER);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_MY_AVATAR), COLLISION_MASK_MY_AVATAR);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_MY_ATTACHMENT), COLLISION_MASK_MY_ATTACHMENT);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_OTHER_AVATAR), COLLISION_MASK_OTHER_AVATAR);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_OTHER_ATTACHMENT), COLLISION_MASK_OTHER_ATTACHMENT);
    _collisionMasks.insert(btHashInt((int)COLLISION_GROUP_COLLISIONLESS), COLLISION_MASK_COLLISIONLESS);
}
예제 #2
0
int main()
{
	btHashMap<btHashInt, btHashInt> btMap;
	
	int k = 1234, v = 5678;
	btMap.insert(btHashInt(k), btHashInt(v));
	
	btHashInt* pVal = btMap.find(btHashInt(k));
	if(pVal == NULL) {
		printf("key: %d not found in btMap\n", k);
	}
	else {
		printf("found key: %d, value: %d in btMap\n", k, v);
	}
	
	return 0;
}
예제 #3
0
int16_t PhysicsEngine::getCollisionMask(int16_t group) const {
    const int16_t* mask = _collisionMasks.find(btHashInt((int)group));
    return mask ? *mask : COLLISION_MASK_DEFAULT;
}