This commit is contained in:
parent
168ab6760b
commit
a093b57ae4
@ -110,140 +110,6 @@ namespace Ogre
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#ifdef BLAH
|
||||
void PolyVoxSceneManager::_findVisibleObjects(Camera* cam, VisibleObjectsBoundsInfo * visibleBounds, bool onlyShadowCasters)
|
||||
{
|
||||
if(!volumeData.isNull())
|
||||
{
|
||||
std::list<RegionGeometry> listChangedRegionGeometry = getChangedRegionGeometry();
|
||||
|
||||
for(std::list<RegionGeometry>::iterator iterRegionGeometry = listChangedRegionGeometry.begin(); iterRegionGeometry != listChangedRegionGeometry.end(); iterRegionGeometry++)
|
||||
{
|
||||
//Generate some strings used to name the scene nodes and renderables.
|
||||
std::stringstream ssPosition;
|
||||
ssPosition << "(" << iterRegionGeometry->m_v3dRegionPosition.x << "," << iterRegionGeometry->m_v3dRegionPosition.y << "," << iterRegionGeometry->m_v3dRegionPosition.z << ")";
|
||||
const std::string strPosition = ssPosition.str();
|
||||
|
||||
std::stringstream ssSceneNodeName;
|
||||
ssSceneNodeName << "Scene Node: " << strPosition;
|
||||
const std::string strSceneNodeName = ssSceneNodeName.str();
|
||||
|
||||
std::stringstream ssSingleMaterialPatchName;
|
||||
ssSingleMaterialPatchName << "Single Material Patch: " << strPosition;
|
||||
const std::string strSingleMaterialPatchName = ssSingleMaterialPatchName.str();
|
||||
|
||||
std::stringstream ssMultiMaterialPatchName;
|
||||
ssMultiMaterialPatchName << "Multi Material Patch: " << strPosition;
|
||||
const std::string strMultiMaterialPatchName = ssMultiMaterialPatchName.str();
|
||||
|
||||
/*LogManager::getSingleton().logMessage(strPosition);
|
||||
LogManager::getSingleton().logMessage(strSceneNodeName);
|
||||
LogManager::getSingleton().logMessage(strSingleMaterialPatchName);
|
||||
LogManager::getSingleton().logMessage(strMultiMaterialPatchName);
|
||||
LogManager::getSingleton().logMessage("\n");*/
|
||||
|
||||
if(iterRegionGeometry->m_bIsEmpty)
|
||||
{
|
||||
makeSureSceneNodeExists(false, strSceneNodeName);
|
||||
continue;
|
||||
}
|
||||
SceneNode* sceneNode = makeSureSceneNodeExists(true, strSceneNodeName);
|
||||
sceneNode->setPosition(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));
|
||||
|
||||
|
||||
bool bSingleMaterialPatchExists = hasMovableObject(strSingleMaterialPatchName,SurfacePatchRenderableFactory::FACTORY_TYPE_NAME);
|
||||
if(iterRegionGeometry->m_bContainsSingleMaterialPatch)
|
||||
{
|
||||
SurfacePatchRenderable* singleMaterialSurfacePatchRenderable;
|
||||
if(bSingleMaterialPatchExists)
|
||||
{
|
||||
singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(getMovableObject(strSingleMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
|
||||
singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchSingleMaterial);
|
||||
}
|
||||
else
|
||||
{
|
||||
singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(createMovableObject(strSingleMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
|
||||
singleMaterialSurfacePatchRenderable->setInitialSurfacePatch(iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1));
|
||||
singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4);
|
||||
sceneNode->attachObject(singleMaterialSurfacePatchRenderable);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(bSingleMaterialPatchExists)
|
||||
{
|
||||
destroyMovableObject(strSingleMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
bool bMultiMaterialPatchExists = hasMovableObject(strMultiMaterialPatchName,SurfacePatchRenderableFactory::FACTORY_TYPE_NAME);
|
||||
if(iterRegionGeometry->m_bContainsMultiMaterialPatch)
|
||||
{
|
||||
SurfacePatchRenderable* multiMaterialSurfacePatchRenderable;
|
||||
if(bMultiMaterialPatchExists)
|
||||
{
|
||||
multiMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(getMovableObject(strMultiMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
|
||||
multiMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchMultiMaterial);
|
||||
}
|
||||
else
|
||||
{
|
||||
multiMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(createMovableObject(strMultiMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
|
||||
multiMaterialSurfacePatchRenderable->setInitialSurfacePatch(iterRegionGeometry->m_patchMultiMaterial,materialMap->getMaterialAtIndex(2));
|
||||
multiMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4);
|
||||
sceneNode->attachObject(multiMaterialSurfacePatchRenderable);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(bMultiMaterialPatchExists)
|
||||
{
|
||||
destroyMovableObject(strMultiMaterialPatchName, SurfacePatchRenderableFactory::FACTORY_TYPE_NAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setAllUpToDateFlagsTo(true);
|
||||
}
|
||||
|
||||
|
||||
//showBoundingBoxes(true);
|
||||
|
||||
//Now call the base class to do the actual visibility determination...
|
||||
SceneManager::_findVisibleObjects(cam, visibleBounds, onlyShadowCasters);
|
||||
|
||||
//LogManager::getSingleton().logMessage("\nNo of triangles = " + StringConverter::toString(IndexedSurfacePatch::noOfTrianglesSubmitted));
|
||||
//LogManager::getSingleton().logMessage("No of vertices submitted = " + StringConverter::toString(IndexedSurfacePatch::noOfVerticesSubmitted));
|
||||
//LogManager::getSingleton().logMessage("No of vertices accepted = " + StringConverter::toString(IndexedSurfacePatch::noOfVerticesAccepted));
|
||||
}
|
||||
|
||||
SceneNode* PolyVoxSceneManager::makeSureSceneNodeExists(bool bShouldExist, const String strSceneNodeName)
|
||||
{
|
||||
bool bSceneNodeExists = hasSceneNode(strSceneNodeName);
|
||||
if(bShouldExist == false)
|
||||
{
|
||||
if(hasSceneNode(strSceneNodeName))
|
||||
{
|
||||
getRootSceneNode()->removeAndDestroyChild(strSceneNodeName);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//If a SceneNode doesn't exist in this position then create one.
|
||||
if(hasSceneNode(strSceneNodeName))
|
||||
{
|
||||
return dynamic_cast<SceneNode*>(getRootSceneNode()->getChild(strSceneNodeName));
|
||||
}
|
||||
else
|
||||
{
|
||||
return getRootSceneNode()->createChildSceneNode(strSceneNodeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
std::list<RegionGeometry> PolyVoxSceneManager::getChangedRegionGeometry(void)
|
||||
{
|
||||
std::list<RegionGeometry> listChangedRegionGeometry;
|
||||
|
Loading…
x
Reference in New Issue
Block a user