// mark tile unused
mark_unused();
- // delete fragment list
- for_each( begin(), end(),
- mem_fun_ref( &fgFRAGMENT::deleteDisplayList ));
- fragment_list.erase( begin(), end() );
+ // delete fragment list and node list
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting " << fragment_list.size() << " fragments" );
+ fragment_list.clear();
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting " << nodes.size() << " nodes" );
+ nodes.clear();
- // delete the ssg used structures
+ // delete the ssg structures
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting vertex, normal, and texture coordinate arrays" );
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting vertex array" );
if ( vtlist != NULL ) {
delete vtlist;
}
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting normal array" );
if ( vnlist != NULL ) {
delete vnlist;
}
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
+ " deleting texture coordinate array" );
if ( tclist != NULL ) {
delete tclist;
}
for ( int i = 0; i < kcount; ++i ) {
ssgEntity *kid = parent->getKid( i );
if ( kid == select_ptr ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
"Found a kid to delete " << kid);
found_kid = true;
+ parent->removeKid( i );
}
}
if ( ! found_kid ) {
}
-// when a tile is still in the cache, but not in the immediate draw l
-// ist, it can still remain in the scene graph, but we use a range
+// when a tile is still in the cache, but not in the immediate draw
+// list, it can still remain in the scene graph, but we use a range
// selector to disable it from ever being drawn.
void
FGTileEntry::ssg_disable() {
// cout << "TILE STATE = " << state << endl;
if ( state == Scheduled_for_use ) {
state = Scheduled_for_cache;
+ } else if ( state == Scheduled_for_cache ) {
+ // do nothing
} else if ( (state == Loaded) || (state == Cached) ) {
state = Cached;
// cout << "DISABLING SSG NODE" << endl;
select_ptr->select(0);
-
-#if 0
- // set a really tiny range
- // cout << "SETTING TINY RANGE" << endl;
- float ranges[2];
- ranges[0] = 0.0f;
- ranges[1] = 0.00001f;
- range_ptr->setRanges( ranges, 2 );
-
- // transform to a long way away
- // cout << "MOVING FAR AWAY" << endl;
- sgCoord sgcoord;
- sgSetCoord( &sgcoord, 999999.0, 999999.0, 999999.0, 0.0, 0.0, 0.0 );
- transform_ptr->setTransform( &sgcoord );
-#endif
} else {
FG_LOG( FG_TERRAIN, FG_ALERT,
"Trying to disable an unused tile! Dying" );