From: <au...@us...> - 2011-09-01 23:47:21
|
Revision: 9704 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=9704&view=rev Author: auria Date: 2011-09-01 23:47:15 +0000 (Thu, 01 Sep 2011) Log Message: ----------- Kinda fixed crash I introduced in 3 strikes, but the current code leaks. Will need to ask Joerg how irrlicht memory management works... Modified Paths: -------------- main/trunk/src/modes/three_strikes_battle.cpp main/trunk/src/modes/three_strikes_battle.hpp main/trunk/src/tracks/track_object_manager.cpp main/trunk/src/tracks/track_object_manager.hpp Modified: main/trunk/src/modes/three_strikes_battle.cpp =================================================================== --- main/trunk/src/modes/three_strikes_battle.cpp 2011-09-01 20:09:26 UTC (rev 9703) +++ main/trunk/src/modes/three_strikes_battle.cpp 2011-09-01 23:47:15 UTC (rev 9704) @@ -76,6 +76,13 @@ //----------------------------------------------------------------------------- ThreeStrikesBattle::~ThreeStrikesBattle() { + PhysicalObject* obj; + for_in(obj, m_tires) + { + m_track->getTrackObjectManager()->removeObject(obj); + } + m_tires.clearWithoutDeleting(); + delete[] m_kart_display_info; // TODO: need to drop the mesh? I got a crash when I added this line so // not sure this is right @@ -210,6 +217,8 @@ // FIXME: orient the force relative to kart orientation obj->getBody()->applyCentralForce(btVector3(60.0f, 0.0f, 0.0f)); m_insert_tire = false; + + m_tires.push_back(obj); } } // update Modified: main/trunk/src/modes/three_strikes_battle.hpp =================================================================== --- main/trunk/src/modes/three_strikes_battle.hpp 2011-09-01 20:09:26 UTC (rev 9703) +++ main/trunk/src/modes/three_strikes_battle.hpp 2011-09-01 23:47:15 UTC (rev 9704) @@ -52,6 +52,8 @@ /** for tires that are blown away */ core::vector3df m_tire_position; + PtrVector<PhysicalObject, REF> m_tires; + public: /** Used to show a nice graph when battle is over */ Modified: main/trunk/src/tracks/track_object_manager.cpp =================================================================== --- main/trunk/src/tracks/track_object_manager.cpp 2011-09-01 20:09:26 UTC (rev 9703) +++ main/trunk/src/tracks/track_object_manager.cpp 2011-09-01 23:47:15 UTC (rev 9704) @@ -204,4 +204,13 @@ return object; } +// ---------------------------------------------------------------------------- +void TrackObjectManager::removeObject(PhysicalObject* who) +{ + m_all_objects.remove(who); + + // FIXME: need to do memory management + //delete who; +} + Modified: main/trunk/src/tracks/track_object_manager.hpp =================================================================== --- main/trunk/src/tracks/track_object_manager.hpp 2011-09-01 20:09:26 UTC (rev 9703) +++ main/trunk/src/tracks/track_object_manager.hpp 2011-09-01 23:47:15 UTC (rev 9704) @@ -59,6 +59,8 @@ const core::vector3df& hpr, const core::vector3df& pos, const core::vector3df& scale); + + void removeObject(PhysicalObject* who); }; // class TrackObjectManager #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |