From 679e419946b3fe42335364e37c8ef468b4953eb2 Mon Sep 17 00:00:00 2001 From: David Williams Date: Thu, 24 Jan 2008 19:36:10 +0000 Subject: [PATCH] Cleaning up. --- include/SurfacePatchRenderable.h | 14 ++++++++------ source/PolyVoxSceneManager.cpp | 16 +++++++--------- source/SurfacePatchRenderable.cpp | 23 +++++++++++++---------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/include/SurfacePatchRenderable.h b/include/SurfacePatchRenderable.h index 19063e84..0f8e5ea9 100644 --- a/include/SurfacePatchRenderable.h +++ b/include/SurfacePatchRenderable.h @@ -18,10 +18,12 @@ namespace Ogre class SurfacePatchRenderable : public SimpleRenderable { public: - SurfacePatchRenderable(const String& name, IndexedSurfacePatch* patchToRender, const String& material = "BaseWhiteNoLighting"); + SurfacePatchRenderable(const String& name); ~SurfacePatchRenderable(void); - + + void setInitialSurfacePatch(IndexedSurfacePatch* patchToRender, const String& material = "BaseWhiteNoLighting"); void updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender); + void setGeometry(IndexedSurfacePatch* patchToRender); Real getSquaredViewDepth(const Camera *cam) const; @@ -35,20 +37,20 @@ namespace Ogre }; /** Factory object for creating Light instances */ - /*class _OgreExport SimplePatchRenderableFactory : public MovableObjectFactory + class VOXEL_SCENE_MANAGER_API SurfacePatchRenderableFactory : public MovableObjectFactory { protected: MovableObject* createInstanceImpl( const String& name, const NameValuePairList* params); public: - SimplePatchRenderableFactory() {} - ~SimplePatchRenderableFactory() {} + SurfacePatchRenderableFactory() {} + ~SurfacePatchRenderableFactory() {} static String FACTORY_TYPE_NAME; const String& getType(void) const; void destroyInstance( MovableObject* obj); - };*/ + }; } #endif /* __SurfacePatchRenderable_H__ */ diff --git a/source/PolyVoxSceneManager.cpp b/source/PolyVoxSceneManager.cpp index 533882ce..bf7da73f 100644 --- a/source/PolyVoxSceneManager.cpp +++ b/source/PolyVoxSceneManager.cpp @@ -155,18 +155,15 @@ namespace Ogre if(iterRegionGeometry->m_bContainsSingleMaterialPatch) { SurfacePatchRenderable* singleMaterialSurfacePatchRenderable; - try - //if(hasMovableObject(singleMaterialNode.str(),"SimpleRenderable") ) + if(hasMovableObject(singleMaterialNode.str(),SurfacePatchRenderableFactory::FACTORY_TYPE_NAME) ) { - LogManager::getSingleton().logMessage("FOUND IT!!!!!!!!!!!!!!!!!!!!!!!!!!"); - singleMaterialSurfacePatchRenderable = dynamic_cast(sceneNode->getAttachedObject(singleMaterialNode.str())); - //singleMaterialSurfacePatchRenderable = dynamic_cast(getMovableObject(singleMaterialNode.str(), "SurfacePatchRenderable")); + singleMaterialSurfacePatchRenderable = dynamic_cast(getMovableObject(singleMaterialNode.str(), SurfacePatchRenderableFactory::FACTORY_TYPE_NAME)); singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchSingleMaterial); } - catch(Ogre::ItemIdentityException) - //else + else { - singleMaterialSurfacePatchRenderable = new SurfacePatchRenderable(singleMaterialNode.str(), iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1)); + singleMaterialSurfacePatchRenderable = dynamic_cast(createMovableObject(singleMaterialNode.str(), SurfacePatchRenderableFactory::FACTORY_TYPE_NAME)); + singleMaterialSurfacePatchRenderable->setInitialSurfacePatch(iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1)); singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4); sceneNode->attachObject(singleMaterialSurfacePatchRenderable); } @@ -195,7 +192,8 @@ namespace Ogre } if(multiMaterialSurfacePatchRenderable == 0) { - SurfacePatchRenderable* multiMaterialSurfacePatchRenderable = new SurfacePatchRenderable(multiMaterialNode.str(), iterRegionGeometry->m_patchMultiMaterial,materialMap->getMaterialAtIndex(2)); + SurfacePatchRenderable* multiMaterialSurfacePatchRenderable = new SurfacePatchRenderable(multiMaterialNode.str()); + multiMaterialSurfacePatchRenderable->setInitialSurfacePatch(iterRegionGeometry->m_patchMultiMaterial,materialMap->getMaterialAtIndex(2)); multiMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_3); sceneNode->attachObject(multiMaterialSurfacePatchRenderable); } diff --git a/source/SurfacePatchRenderable.cpp b/source/SurfacePatchRenderable.cpp index c8055692..a0ada0d9 100644 --- a/source/SurfacePatchRenderable.cpp +++ b/source/SurfacePatchRenderable.cpp @@ -8,7 +8,7 @@ namespace Ogre { - SurfacePatchRenderable::SurfacePatchRenderable(const String& name, IndexedSurfacePatch* patchToRender, const String& material) + SurfacePatchRenderable::SurfacePatchRenderable(const String& name) :SimpleRenderable(name) { //Set up what we can of the vertex data @@ -30,10 +30,6 @@ namespace Ogre decl->addElement(0, 3 * sizeof(float), VET_FLOAT3, VES_NORMAL); decl->addElement(0, 6 * sizeof(float), VET_FLOAT2, VES_TEXTURE_COORDINATES); - - this->setMaterial(material); - - setGeometry(patchToRender); } SurfacePatchRenderable::~SurfacePatchRenderable(void) @@ -42,6 +38,13 @@ namespace Ogre delete mRenderOp.indexData; } + void SurfacePatchRenderable::setInitialSurfacePatch(IndexedSurfacePatch* patchToRender, const String& material) + { + this->setMaterial(material); + + setGeometry(patchToRender); + } + void SurfacePatchRenderable::updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender) { setGeometry(patchToRender); @@ -173,14 +176,14 @@ namespace Ogre } //----------------------------------------------------------------------- - /*String LightFactory::FACTORY_TYPE_NAME = "SurfacePatchRenderable"; + String SurfacePatchRenderableFactory::FACTORY_TYPE_NAME = "SurfacePatchRenderable"; //----------------------------------------------------------------------- - const String& SimplePatchRenderableFactory::getType(void) const + const String& SurfacePatchRenderableFactory::getType(void) const { return FACTORY_TYPE_NAME; } //----------------------------------------------------------------------- - MovableObject* SimplePatchRenderableFactory::createInstanceImpl( const String& name, + MovableObject* SurfacePatchRenderableFactory::createInstanceImpl( const String& name, const NameValuePairList* params) { @@ -188,8 +191,8 @@ namespace Ogre } //----------------------------------------------------------------------- - void SimplePatchRenderableFactory::destroyInstance( MovableObject* obj) + void SurfacePatchRenderableFactory::destroyInstance( MovableObject* obj) { delete obj; - }*/ + } }