Uses arrays instead of m_tire_{1,2,3,4}_{radius,offset} scalar variables.

Fixed incorrect indices used for tires (used 1-4, should use 0-3).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@9838 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk
2011-09-14 23:11:12 +00:00
parent 7abdefca39
commit 8b85ee1cac
2 changed files with 19 additions and 45 deletions

View File

@@ -195,19 +195,16 @@ void ThreeStrikesBattle::kartHit(const int kart_id)
m_tire_rotation = m_karts[kart_id]->getHeading();
}
m_tire_1_offset = m_karts[kart_id]->getKartModel()->getWheelGraphicsPosition(1).toIrrVector();
m_tire_2_offset = m_karts[kart_id]->getKartModel()->getWheelGraphicsPosition(2).toIrrVector();
m_tire_3_offset = m_karts[kart_id]->getKartModel()->getWheelGraphicsPosition(3).toIrrVector();
m_tire_4_offset = m_karts[kart_id]->getKartModel()->getWheelGraphicsPosition(4).toIrrVector();
m_tire_1_offset.rotateXZBy(-m_tire_rotation / M_PI * 180 + 180);
m_tire_2_offset.rotateXZBy(-m_tire_rotation / M_PI * 180 + 180);
m_tire_3_offset.rotateXZBy(-m_tire_rotation / M_PI * 180 + 180);
m_tire_4_offset.rotateXZBy(-m_tire_rotation / M_PI * 180 + 180);
for(unsigned int i=0; i<4; i++)
{
m_tire_offsets[i] = m_karts[kart_id]->getKartModel()
->getWheelGraphicsPosition(i).toIrrVector();
m_tire_offsets[i].rotateXZBy(-m_tire_rotation / M_PI * 180 + 180);
m_tire_radius[i] = m_karts[kart_id]->getKartModel()
->getWheelGraphicsRadius(i);
}
m_tire_dir = m_karts[kart_id]->getKartProperties()->getKartDir();
m_tire_1_radius = m_karts[kart_id]->getKartModel()->getWheelGraphicsRadius(1);
m_tire_2_radius = m_karts[kart_id]->getKartModel()->getWheelGraphicsRadius(2);
m_tire_3_radius = m_karts[kart_id]->getKartModel()->getWheelGraphicsRadius(3);
m_tire_4_radius = m_karts[kart_id]->getKartModel()->getWheelGraphicsRadius(4);
if(m_insert_tire == 5 && m_karts[kart_id]->isWheeless())
m_insert_tire = 0;
@@ -249,34 +246,16 @@ void ThreeStrikesBattle::update(float dt)
radius = 0.5f;
tire_model = PhysicalObject::MP_CYLINDER_Y;
}
if(m_insert_tire != 1)
else
{
scale = 1.0f;
tire_model = PhysicalObject::MP_CYLINDER_X;
}
if(m_insert_tire == 2)
{
tire_offset = m_tire_1_offset;
tire = m_tire_dir+"/wheel-rear-left.b3d";
radius = m_tire_1_radius;
}
if(m_insert_tire == 3)
{
tire_offset = m_tire_2_offset;
tire = m_tire_dir+"/wheel-front-left.b3d";
radius = m_tire_2_radius;
}
if(m_insert_tire == 4)
{
tire_offset = m_tire_3_offset;
tire = m_tire_dir+"/wheel-front-right.b3d";
radius = m_tire_3_radius;
}
if(m_insert_tire == 5)
{
tire_offset = m_tire_4_offset;
tire = m_tire_dir+"/wheel-rear-right.b3d";
radius = m_tire_4_radius;
radius = m_tire_radius[m_insert_tire-2];
tire_offset = m_tire_offsets[m_insert_tire-2];
if (m_insert_tire == 2) tire = m_tire_dir+"/wheel-rear-left.b3d";
else if(m_insert_tire == 3) tire = m_tire_dir+"/wheel-front-left.b3d";
else if(m_insert_tire == 4) tire = m_tire_dir+"/wheel-front-right.b3d";
else if(m_insert_tire == 5) tire = m_tire_dir+"/wheel-rear-right.b3d";
}
PhysicalObject* obj =

View File

@@ -52,15 +52,10 @@ private:
/** for tires that are blown away */
core::vector3df m_tire_position;
core::vector3df m_tire_1_offset;
core::vector3df m_tire_2_offset;
core::vector3df m_tire_3_offset;
core::vector3df m_tire_4_offset;
core::vector3df m_tire_offsets[4];
float m_tire_radius[4];
std::string m_tire_dir;
float m_tire_1_radius;
float m_tire_2_radius;
float m_tire_3_radius;
float m_tire_4_radius;
double m_tire_rotation;
PtrVector<PhysicalObject, REF> m_tires;