From: <hik...@us...> - 2010-11-09 21:54:14
|
Revision: 6487 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=6487&view=rev Author: hikerstk Date: 2010-11-09 21:54:08 +0000 (Tue, 09 Nov 2010) Log Message: ----------- Fixed crash in case that there are more start positions defined in a scene file than there are karts in the race. Fixed handling of start entries without position values in scene.xml files. Modified Paths: -------------- main/trunk/src/tracks/track.cpp Modified: main/trunk/src/tracks/track.cpp =================================================================== --- main/trunk/src/tracks/track.cpp 2010-11-09 21:50:14 UTC (rev 6486) +++ main/trunk/src/tracks/track.cpp 2010-11-09 21:54:08 UTC (rev 6487) @@ -751,6 +751,7 @@ loadMainTrack(*root); unsigned int main_track_count = m_all_nodes.size(); + unsigned int start_position_counter = 0; for(unsigned int i=0; i<root->getNumNodes(); i++) { @@ -788,15 +789,22 @@ } else if (name=="start") { - unsigned int position=0; + unsigned int position = start_position_counter; + start_position_counter++; node->get("position", &position); Vec3 xyz(0,0,0); node->getXYZ(&xyz); float h=0; node->get("h", &h); - m_start_transforms[position].setOrigin(xyz); - m_start_transforms[position].setRotation( - btQuaternion(btVector3(0,1,0),h ) ); + // It is possible that there are more start positions defined + // than there are karts (and therefore that there are values + // allocated in m_start_transforms. Ignore those: + if(position <m_start_transforms.size()) + { + m_start_transforms[position].setOrigin(xyz); + m_start_transforms[position].setRotation( + btQuaternion(btVector3(0,1,0),h ) ); + } } else if(name=="camera") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |