I'm facing a problem, however, because when I delete the old page inside attachPage(), it looks like it's already been queued for rendering, and therefore an access violation occurs on next rendering (stack trace). The code I use right now for testing looks like this: (And yes, I know I shouldn't delete the terrain page here. I'm going to use SharedPtrs so it'll be handled automatically.)
Code: Select all
void TerrainSceneManager::attachPage(ushort pageX, ushort pageZ, TerrainPage* page)
{
assert(pageX == 0 && pageZ == 0 && "Multiple pages not yet supported");
//assert(mTerrainPages[pageX][pageZ] == 0 && "Page at that index not yet expired!");
if (mTerrainPages[pageX][pageZ])
{
// Detach old page from terrain root
mTerrainRoot->removeChild(mTerrainPages[pageX][pageZ]->pageSceneNode);
delete mTerrainPages[pageX][pageZ];
}
// Insert page into list
mTerrainPages[pageX][pageZ] = page;
// Attach page to terrain root
mTerrainRoot->addChild(page->pageSceneNode);
}