assign proper index when removing a child shape from btCompoundShape
Thanks to sparkprime for the report and fix in Issue 354 See http://code.google.com/p/bullet/issues/detail?id=354 Fix a few warnings
This commit is contained in:
@@ -114,6 +114,8 @@ public:
|
|||||||
|
|
||||||
void ProcessChildShape(btCollisionShape* childShape,int index)
|
void ProcessChildShape(btCollisionShape* childShape,int index)
|
||||||
{
|
{
|
||||||
|
btAssert(index>=0);
|
||||||
|
btAssert(index<compoundShape->getNumChildShapes());
|
||||||
|
|
||||||
btCompoundShape* compoundShape = static_cast<btCompoundShape*>(m_compoundColObj->getCollisionShape());
|
btCompoundShape* compoundShape = static_cast<btCompoundShape*>(m_compoundColObj->getCollisionShape());
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,8 @@ void btCompoundShape::removeChildShapeByIndex(int childShapeIndex)
|
|||||||
m_dynamicAabbTree->remove(m_children[childShapeIndex].m_node);
|
m_dynamicAabbTree->remove(m_children[childShapeIndex].m_node);
|
||||||
}
|
}
|
||||||
m_children.swap(childShapeIndex,m_children.size()-1);
|
m_children.swap(childShapeIndex,m_children.size()-1);
|
||||||
|
if (m_dynamicAabbTree)
|
||||||
|
m_children[childShapeIndex].m_node->dataAsInt = childShapeIndex;
|
||||||
m_children.pop_back();
|
m_children.pop_back();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ void btKinematicCharacterController::stepUp ( btCollisionWorld* world)
|
|||||||
{
|
{
|
||||||
// phase 1: up
|
// phase 1: up
|
||||||
btTransform start, end;
|
btTransform start, end;
|
||||||
m_targetPosition = m_currentPosition + getUpAxisDirections()[m_upAxis] * (m_stepHeight + (m_verticalOffset > 0.0?m_verticalOffset:0.0));
|
m_targetPosition = m_currentPosition + getUpAxisDirections()[m_upAxis] * (m_stepHeight + (m_verticalOffset > btScalar(0.0)?m_verticalOffset:btScalar(0.0)));
|
||||||
|
|
||||||
start.setIdentity ();
|
start.setIdentity ();
|
||||||
end.setIdentity ();
|
end.setIdentity ();
|
||||||
@@ -381,9 +381,9 @@ void btKinematicCharacterController::stepDown ( btCollisionWorld* collisionWorld
|
|||||||
btTransform start, end;
|
btTransform start, end;
|
||||||
|
|
||||||
// phase 3: down
|
// phase 3: down
|
||||||
btScalar additionalDownStep = (m_wasOnGround /*&& !onGround()*/) ? m_stepHeight : 0.0;
|
btScalar additionalDownStep = (m_wasOnGround /*&& !onGround()*/) ? m_stepHeight : btScalar(0.0);
|
||||||
btVector3 step_drop = getUpAxisDirections()[m_upAxis] * (m_currentStepOffset + additionalDownStep);
|
btVector3 step_drop = getUpAxisDirections()[m_upAxis] * (m_currentStepOffset + additionalDownStep);
|
||||||
btScalar downVelocity = (additionalDownStep == 0.0 && m_verticalVelocity<0.0?-m_verticalVelocity:0.0) * dt;
|
btScalar downVelocity = (additionalDownStep == btScalar(0.0) && m_verticalVelocity<btScalar(0.0)?-m_verticalVelocity:btScalar(0.0)) * dt;
|
||||||
btVector3 gravity_drop = getUpAxisDirections()[m_upAxis] * downVelocity;
|
btVector3 gravity_drop = getUpAxisDirections()[m_upAxis] * downVelocity;
|
||||||
m_targetPosition -= (step_drop + gravity_drop);
|
m_targetPosition -= (step_drop + gravity_drop);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user