Support added for 'coneX' and 'coneZ' shapes as physical objects

(previously only as animated objects). Both 'cone' and 'coneY' is
now accepted, too.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@5483 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2010-06-07 22:08:15 +00:00
parent dc301c1726
commit 79641e7f88
3 changed files with 22 additions and 3 deletions

View File

@ -68,7 +68,7 @@ void ThreeDAnimation::createPhysicsBody(const std::string &shape)
float radius = 0.5f*std::max(extend.getY(), extend.getZ());
m_collision_shape = new btConeShapeX(radius, extend.getX());
}
else if(shape=="coneY")
else if(shape=="coneY" || shape=="cone")
{
float radius = 0.5f*std::max(extend.getX(), extend.getZ());
m_collision_shape = new btConeShape(radius, extend.getY());

View File

@ -51,7 +51,9 @@ PhysicalObject::PhysicalObject(const XMLNode &xml_node)
xml_node.get("shape", &shape );
m_body_type = MP_NONE;
if (shape=="cone" ) m_body_type = MP_CONE;
if (shape=="cone"||shape=="coneY") m_body_type = MP_CONE;
else if(shape=="coneX" ) m_body_type = MP_CONE_X;
else if(shape=="coneZ" ) m_body_type = MP_CONE_Z;
else if(shape=="box" ) m_body_type = MP_BOX;
else if(shape=="sphere" ) m_body_type = MP_SPHERE;
else fprintf(stderr, "Unknown shape type : %s\n", shape.c_str());
@ -93,6 +95,20 @@ void PhysicalObject::init()
m_shape = new btConeShape(m_radius, extend.getY());
break;
}
case MP_CONE_X: {
if(m_radius<0)
m_radius = 0.5f*sqrt(extend.getY()*extend.getY() +
extend.getZ()*extend.getZ());
m_shape = new btConeShapeX(m_radius, extend.getY());
break;
}
case MP_CONE_Z: {
if(m_radius<0)
m_radius = 0.5f*sqrt(extend.getX()*extend.getX() +
extend.getY()*extend.getY());
m_shape = new btConeShapeZ(m_radius, extend.getY());
break;
}
case MP_BOX: m_shape = new btBoxShape(0.5*extend);
break;
case MP_SPHERE: {

View File

@ -36,7 +36,10 @@ class XMLNode;
class PhysicalObject : public TrackObject
{
public:
enum bodyTypes {MP_NONE, MP_CONE, MP_BOX, MP_SPHERE};
/** The supported collision shapes. */
enum bodyTypes {MP_NONE,
MP_CONE, MP_CONE_X, MP_CONE_Z,
MP_BOX, MP_SPHERE};
protected:
/** The shape of this object. */