Cleaning up.

This commit is contained in:
David Williams 2008-01-19 23:22:06 +00:00
parent 852f293e3b
commit a319751d7e

View File

@ -121,11 +121,7 @@ namespace Ogre
std::string location("");
location = location + "(" + iterRegionGeometry->m_v3dRegionPosition.x + "," + iterRegionGeometry->m_v3dRegionPosition.y + "," + iterRegionGeometry->m_v3dRegionPosition.z + ")";
//Get the surface
IndexedSurfacePatch* singleMaterialPatch = iterRegionGeometry->m_patchSingleMaterial;
IndexedSurfacePatch* multiMaterialPatch = iterRegionGeometry->m_patchMultiMaterial;
if((singleMaterialPatch->m_vecVertices.size() == 0) && (singleMaterialPatch->m_vecTriangleIndices.size() == 0))
if(iterRegionGeometry->m_bIsEmpty)
{
try
{
@ -134,43 +130,45 @@ namespace Ogre
catch(...)
{
}
continue;
}
//If a SceneNode doesn't exist in this position then create one.
SceneNode* sceneNode;
try
{
sceneNode = dynamic_cast<SceneNode*>(getRootSceneNode()->getChild(location));
}
catch(...)
{
sceneNode = 0;
}
if(sceneNode == 0)
{
sceneNode = getRootSceneNode()->createChildSceneNode(location, Vector3(iterRegionGeometry->m_v3dRegionPosition.x*OGRE_REGION_SIDE_LENGTH,iterRegionGeometry->m_v3dRegionPosition.y*OGRE_REGION_SIDE_LENGTH,iterRegionGeometry->m_v3dRegionPosition.z*OGRE_REGION_SIDE_LENGTH));
SurfacePatchRenderable*singleMaterialSurfacePatchRenderable = new SurfacePatchRenderable(singleMaterialPatch,materialMap->getMaterialAtIndex(1));
SurfacePatchRenderable*multiMaterialSurfacePatchRenderable = new SurfacePatchRenderable(multiMaterialPatch,materialMap->getMaterialAtIndex(2));
multiMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_3);
singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4);
sceneNode->attachObject(singleMaterialSurfacePatchRenderable);
sceneNode->attachObject(multiMaterialSurfacePatchRenderable);
}
else
{
SurfacePatchRenderable* singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(sceneNode->getAttachedObject(0));
SurfacePatchRenderable* multiMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(sceneNode->getAttachedObject(1));
//If a SceneNode doesn't exist in this position then create one.
SceneNode* sceneNode;
try
{
sceneNode = dynamic_cast<SceneNode*>(getRootSceneNode()->getChild(location));
}
catch(...)
{
sceneNode = 0;
}
singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(singleMaterialPatch);
if(sceneNode == 0)
{
sceneNode = getRootSceneNode()->createChildSceneNode(location, Vector3(iterRegionGeometry->m_v3dRegionPosition.x*OGRE_REGION_SIDE_LENGTH,iterRegionGeometry->m_v3dRegionPosition.y*OGRE_REGION_SIDE_LENGTH,iterRegionGeometry->m_v3dRegionPosition.z*OGRE_REGION_SIDE_LENGTH));
multiMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(multiMaterialPatch);
SurfacePatchRenderable*singleMaterialSurfacePatchRenderable = new SurfacePatchRenderable(iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1));
SurfacePatchRenderable*multiMaterialSurfacePatchRenderable = new SurfacePatchRenderable(iterRegionGeometry->m_patchMultiMaterial,materialMap->getMaterialAtIndex(2));
multiMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_3);
singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4);
sceneNode->attachObject(singleMaterialSurfacePatchRenderable);
sceneNode->attachObject(multiMaterialSurfacePatchRenderable);
}
else
{
SurfacePatchRenderable* singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(sceneNode->getAttachedObject(0));
SurfacePatchRenderable* multiMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(sceneNode->getAttachedObject(1));
singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchSingleMaterial);
multiMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchMultiMaterial);
}
}
}
@ -212,6 +210,8 @@ namespace Ogre
generateMeshDataForRegion(regionX,regionY,regionZ, regionGeometry.m_patchSingleMaterial, regionGeometry.m_patchMultiMaterial);
regionGeometry.m_bIsEmpty = ((regionGeometry.m_patchSingleMaterial->m_vecVertices.size() == 0) && (regionGeometry.m_patchMultiMaterial->m_vecTriangleIndices.size() == 0));
listChangedRegionGeometry.push_back(regionGeometry);
}
}