@@ -606,18 +606,18 @@ void W3DRadar::drawEvents( Int pixelX, Int pixelY, Int width, Int height )
606606void W3DRadar::drawIcons ( Int pixelX, Int pixelY, Int width, Int height )
607607{
608608 // draw the hero icons
609- std::list <const Coord3D *>::const_iterator iter = m_cachedHeroPosList .begin ();
610- while (iter != m_cachedHeroPosList .end ())
609+ std::vector <const Object *>::const_iterator iter = m_cachedHeroObjectList .begin ();
610+ while (iter != m_cachedHeroObjectList .end ())
611611 {
612- drawHeroIcon ( pixelX, pixelY, width, height, (*iter) );
612+ drawHeroIcon ( pixelX, pixelY, width, height, (*iter)-> getPosition () );
613613 ++iter;
614614 }
615615}
616616
617617// -------------------------------------------------------------------------------------------------
618618/* * Render an object list into the texture passed in */
619619// -------------------------------------------------------------------------------------------------
620- void W3DRadar::renderObjectList ( const RadarObject *listHead, TextureClass *texture, Bool calcHero )
620+ void W3DRadar::renderObjectList ( const RadarObject *listHead, TextureClass *texture )
621621{
622622
623623 // sanity
@@ -635,12 +635,6 @@ void W3DRadar::renderObjectList( const RadarObject *listHead, TextureClass *text
635635 if (player)
636636 playerIndex=player->getPlayerIndex ();
637637
638- if ( calcHero )
639- {
640- // clear all entries from the cached hero object list
641- m_cachedHeroPosList.clear ();
642- }
643-
644638 for ( const RadarObject *rObj = listHead; rObj; rObj = rObj->friend_getNext () )
645639 {
646640
@@ -650,11 +644,6 @@ void W3DRadar::renderObjectList( const RadarObject *listHead, TextureClass *text
650644 // get object
651645 const Object *obj = rObj->friend_getObject ();
652646
653- // cache hero object positions for drawing in icon layer
654- if ( calcHero && obj->isHero () )
655- {
656- m_cachedHeroPosList.push_back (obj->getPosition ());
657- }
658647 Bool skip = FALSE ;
659648
660649 // check for shrouded status
@@ -995,6 +984,34 @@ void W3DRadar::update( void )
995984
996985} // end update
997986
987+ // -------------------------------------------------------------------------------------------------
988+ bool W3DRadar::addObject ( Object *obj )
989+ {
990+ if (Radar::addObject (obj))
991+ {
992+ if (obj->isHero ())
993+ {
994+ m_cachedHeroObjectList.push_back (obj);
995+ }
996+ return true ;
997+ }
998+ return false ;
999+ }
1000+
1001+ // -------------------------------------------------------------------------------------------------
1002+ bool W3DRadar::removeObject ( Object *obj )
1003+ {
1004+ if (Radar::removeObject (obj))
1005+ {
1006+ if (obj->isHero ())
1007+ {
1008+ stl::find_and_erase_unordered (m_cachedHeroObjectList, obj);
1009+ }
1010+ return true ;
1011+ }
1012+ return false ;
1013+ }
1014+
9981015// -------------------------------------------------------------------------------------------------
9991016/* * Reset the radar for the new map data being given to it */
10001017// -------------------------------------------------------------------------------------------------
@@ -1404,7 +1421,7 @@ void W3DRadar::draw( Int pixelX, Int pixelY, Int width, Int height )
14041421
14051422 // rebuild the object overlay
14061423 renderObjectList ( getObjectList (), m_overlayTexture );
1407- renderObjectList ( getLocalObjectList (), m_overlayTexture, TRUE );
1424+ renderObjectList ( getLocalObjectList (), m_overlayTexture );
14081425
14091426 } // end if
14101427
@@ -1463,7 +1480,7 @@ void W3DRadar::refreshTerrain( TerrainLogic *terrain )
14631480
14641481/*
14651482 *
1466- void W3DRadar::renderObjectList( const RadarObject *listHead, TextureClass *texture, Bool calcHero )
1483+ void W3DRadar::renderObjectList( const RadarObject *listHead, TextureClass *texture )
14671484{
14681485
14691486 // sanity
@@ -1483,12 +1500,6 @@ void W3DRadar::refreshTerrain( TerrainLogic *terrain )
14831500
14841501 UnsignedByte minAlpha = 8;
14851502
1486- if( calcHero )
1487- {
1488- // clear all entries from the cached hero object list
1489- m_cachedHeroPosList.clear();
1490- }
1491-
14921503 for( const RadarObject *rObj = listHead; rObj; rObj = rObj->friend_getNext() )
14931504 {
14941505 UnsignedByte h = (UnsignedByte)(rObj->isTemporarilyHidden());
@@ -1501,12 +1512,6 @@ void W3DRadar::refreshTerrain( TerrainLogic *terrain )
15011512 const Object *obj = rObj->friend_getObject();
15021513 UnsignedByte r = 1; // all decoys
15031514
1504- // cache hero object positions for drawing in icon layer
1505- if( calcHero && obj->isHero() )
1506- {
1507- m_cachedHeroPosList.push_back(obj->getPosition());
1508- }
1509-
15101515 // get the color we're going to draw in
15111516 UnsignedInt c = 0xfe000000;// this is a decoy
15121517 c |= (UnsignedInt)( obj->testStatus( OBJECT_STATUS_STEALTHED ) );//so is this
0 commit comments