From: <au...@us...> - 2011-05-24 00:04:49
|
Revision: 8688 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=8688&view=rev Author: auria Date: 2011-05-24 00:04:43 +0000 (Tue, 24 May 2011) Log Message: ----------- Simplify code by using PtrVector instead of vector + manual delete Modified Paths: -------------- main/trunk/src/tracks/track_object_manager.cpp main/trunk/src/tracks/track_object_manager.hpp Modified: main/trunk/src/tracks/track_object_manager.cpp =================================================================== --- main/trunk/src/tracks/track_object_manager.cpp 2011-05-23 23:56:52 UTC (rev 8687) +++ main/trunk/src/tracks/track_object_manager.cpp 2011-05-24 00:04:43 UTC (rev 8688) @@ -34,10 +34,6 @@ // ---------------------------------------------------------------------------- TrackObjectManager::~TrackObjectManager() { - for(unsigned int i=0; i<m_all_objects.size(); i++) - { - delete m_all_objects[i]; - } } // ~TrackObjectManager // ---------------------------------------------------------------------------- @@ -72,10 +68,10 @@ */ void TrackObjectManager::init() { - std::vector<TrackObject*>::iterator i; - for(i=m_all_objects.begin(); i!=m_all_objects.end(); i++) + TrackObject* curr; + for_in (curr, m_all_objects) { - (*i)->init(); + curr->init(); } } // reset // ---------------------------------------------------------------------------- @@ -83,10 +79,10 @@ */ void TrackObjectManager::reset() { - std::vector<TrackObject*>::iterator i; - for(i=m_all_objects.begin(); i!=m_all_objects.end(); i++) + TrackObject* curr; + for_in (curr, m_all_objects) { - (*i)->reset(); + curr->reset(); } } // reset @@ -98,12 +94,12 @@ * more. Otherwise this is NULL. */ -void TrackObjectManager::handleExplosion(const Vec3 &pos, const PhysicalObject *mp) const +void TrackObjectManager::handleExplosion(const Vec3 &pos, const PhysicalObject *mp) { - for(std::vector<TrackObject*>::const_iterator i=m_all_objects.begin(); - i!=m_all_objects.end(); i++) + TrackObject* curr; + for_in (curr, m_all_objects) { - (*i)->handleExplosion(pos, mp==(*i)); + curr->handleExplosion(pos, mp == curr); } } // handleExplosion @@ -112,10 +108,10 @@ { if ( UserConfigParams::m_graphical_effects ) { - for(std::vector<TrackObject*>::const_iterator i=m_all_objects.begin(); - i!=m_all_objects.end(); i++) + TrackObject* curr; + for_in (curr, m_all_objects) { - (*i)->update(dt); + curr->update(dt); } } } // update @@ -124,14 +120,14 @@ void TrackObjectManager::enableFog(bool enable) { - const unsigned int count = m_all_objects.size(); - for(unsigned int i=0; i<count; i++) + TrackObject* curr; + for_in (curr, m_all_objects) { - m_all_objects[i]->getNode()->setMaterialFlag(video::EMF_FOG_ENABLE, enable); + curr->getNode()->setMaterialFlag(video::EMF_FOG_ENABLE, enable); - if (m_all_objects[i]->getNode()->getType() == scene::ESNT_LOD_NODE) + if (curr->getNode()->getType() == scene::ESNT_LOD_NODE) { - std::vector<scene::ISceneNode*>& nodes = ((LODNode*)m_all_objects[i]->getNode())->getAllNodes(); + std::vector<scene::ISceneNode*>& nodes = ((LODNode*)curr->getNode())->getAllNodes(); for (unsigned int n=0; n<nodes.size(); n++) { nodes[n]->setMaterialFlag(video::EMF_FOG_ENABLE, enable); Modified: main/trunk/src/tracks/track_object_manager.hpp =================================================================== --- main/trunk/src/tracks/track_object_manager.hpp 2011-05-23 23:56:52 UTC (rev 8687) +++ main/trunk/src/tracks/track_object_manager.hpp 2011-05-24 00:04:43 UTC (rev 8688) @@ -20,11 +20,11 @@ #ifndef HEADER_TRACK_OBJECT_MANAGER_HPP #define HEADER_TRACK_OBJECT_MANAGER_HPP -#include <vector> +#include "tracks/track_object.hpp" +#include "utils/ptr_vector.hpp" class PhysicalObject; class Track; -class TrackObject; class Vec3; class XMLNode; @@ -40,13 +40,14 @@ * eye candy (to reduce work for physics), ... */ enum TrackObjectType {TO_PHYSICAL, TO_GRAPHICAL}; - std::vector<TrackObject*> m_all_objects; + PtrVector<TrackObject> m_all_objects; + public: TrackObjectManager(); ~TrackObjectManager(); void add(const XMLNode &xml_node); void update(float dt); - void handleExplosion(const Vec3 &pos, const PhysicalObject *mp) const; + void handleExplosion(const Vec3 &pos, const PhysicalObject *mp); void reset(); void init(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |