diff --git a/src/BulletCollision/CollisionShapes/btConeShape.cpp b/src/BulletCollision/CollisionShapes/btConeShape.cpp index dfa3f941e..5e83087b3 100644 --- a/src/BulletCollision/CollisionShapes/btConeShape.cpp +++ b/src/BulletCollision/CollisionShapes/btConeShape.cpp @@ -131,3 +131,13 @@ btVector3 btConeShape::localGetSupportingVertex(const btVector3& vec) const } +void btConeShape::setLocalScaling(const btVector3& scaling) +{ + int axis = m_coneIndices[1]; + int r1 = m_coneIndices[0]; + int r2 = m_coneIndices[2]; + m_height *= scaling[axis] / m_localScaling[axis]; + m_radius *= (scaling[r1] / m_localScaling[r1] + scaling[r2] / m_localScaling[r2]) / 2; + m_sinAngle = (m_radius / btSqrt(m_radius * m_radius + m_height * m_height)); + btConvexInternalShape::setLocalScaling(scaling); +} \ No newline at end of file diff --git a/src/BulletCollision/CollisionShapes/btConeShape.h b/src/BulletCollision/CollisionShapes/btConeShape.h index 9766c7ef2..bd7d1443a 100644 --- a/src/BulletCollision/CollisionShapes/btConeShape.h +++ b/src/BulletCollision/CollisionShapes/btConeShape.h @@ -81,6 +81,9 @@ public: { return m_coneIndices[1]; } + + virtual void setLocalScaling(const btVector3& scaling); + }; ///btConeShape implements a Cone shape, around the X axis