Cleaning up.

This commit is contained in:
David Williams 2008-01-24 19:36:10 +00:00
parent 048af66620
commit 679e419946
3 changed files with 28 additions and 25 deletions

View File

@ -18,10 +18,12 @@ namespace Ogre
class SurfacePatchRenderable : public SimpleRenderable class SurfacePatchRenderable : public SimpleRenderable
{ {
public: public:
SurfacePatchRenderable(const String& name, IndexedSurfacePatch* patchToRender, const String& material = "BaseWhiteNoLighting"); SurfacePatchRenderable(const String& name);
~SurfacePatchRenderable(void); ~SurfacePatchRenderable(void);
void setInitialSurfacePatch(IndexedSurfacePatch* patchToRender, const String& material = "BaseWhiteNoLighting");
void updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender); void updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender);
void setGeometry(IndexedSurfacePatch* patchToRender); void setGeometry(IndexedSurfacePatch* patchToRender);
Real getSquaredViewDepth(const Camera *cam) const; Real getSquaredViewDepth(const Camera *cam) const;
@ -35,20 +37,20 @@ namespace Ogre
}; };
/** Factory object for creating Light instances */ /** Factory object for creating Light instances */
/*class _OgreExport SimplePatchRenderableFactory : public MovableObjectFactory class VOXEL_SCENE_MANAGER_API SurfacePatchRenderableFactory : public MovableObjectFactory
{ {
protected: protected:
MovableObject* createInstanceImpl( const String& name, const NameValuePairList* params); MovableObject* createInstanceImpl( const String& name, const NameValuePairList* params);
public: public:
SimplePatchRenderableFactory() {} SurfacePatchRenderableFactory() {}
~SimplePatchRenderableFactory() {} ~SurfacePatchRenderableFactory() {}
static String FACTORY_TYPE_NAME; static String FACTORY_TYPE_NAME;
const String& getType(void) const; const String& getType(void) const;
void destroyInstance( MovableObject* obj); void destroyInstance( MovableObject* obj);
};*/ };
} }
#endif /* __SurfacePatchRenderable_H__ */ #endif /* __SurfacePatchRenderable_H__ */

View File

@ -155,18 +155,15 @@ namespace Ogre
if(iterRegionGeometry->m_bContainsSingleMaterialPatch) if(iterRegionGeometry->m_bContainsSingleMaterialPatch)
{ {
SurfacePatchRenderable* singleMaterialSurfacePatchRenderable; SurfacePatchRenderable* singleMaterialSurfacePatchRenderable;
try if(hasMovableObject(singleMaterialNode.str(),SurfacePatchRenderableFactory::FACTORY_TYPE_NAME) )
//if(hasMovableObject(singleMaterialNode.str(),"SimpleRenderable") )
{ {
LogManager::getSingleton().logMessage("FOUND IT!!!!!!!!!!!!!!!!!!!!!!!!!!"); singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(getMovableObject(singleMaterialNode.str(), SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(sceneNode->getAttachedObject(singleMaterialNode.str()));
//singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(getMovableObject(singleMaterialNode.str(), "SurfacePatchRenderable"));
singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchSingleMaterial); singleMaterialSurfacePatchRenderable->updateWithNewSurfacePatch(iterRegionGeometry->m_patchSingleMaterial);
} }
catch(Ogre::ItemIdentityException) else
//else
{ {
singleMaterialSurfacePatchRenderable = new SurfacePatchRenderable(singleMaterialNode.str(), iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1)); singleMaterialSurfacePatchRenderable = dynamic_cast<SurfacePatchRenderable*>(createMovableObject(singleMaterialNode.str(), SurfacePatchRenderableFactory::FACTORY_TYPE_NAME));
singleMaterialSurfacePatchRenderable->setInitialSurfacePatch(iterRegionGeometry->m_patchSingleMaterial,materialMap->getMaterialAtIndex(1));
singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4); singleMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_4);
sceneNode->attachObject(singleMaterialSurfacePatchRenderable); sceneNode->attachObject(singleMaterialSurfacePatchRenderable);
} }
@ -195,7 +192,8 @@ namespace Ogre
} }
if(multiMaterialSurfacePatchRenderable == 0) 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); multiMaterialSurfacePatchRenderable->setRenderQueueGroup(RENDER_QUEUE_3);
sceneNode->attachObject(multiMaterialSurfacePatchRenderable); sceneNode->attachObject(multiMaterialSurfacePatchRenderable);
} }

View File

@ -8,7 +8,7 @@
namespace Ogre namespace Ogre
{ {
SurfacePatchRenderable::SurfacePatchRenderable(const String& name, IndexedSurfacePatch* patchToRender, const String& material) SurfacePatchRenderable::SurfacePatchRenderable(const String& name)
:SimpleRenderable(name) :SimpleRenderable(name)
{ {
//Set up what we can of the vertex data //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, 3 * sizeof(float), VET_FLOAT3, VES_NORMAL);
decl->addElement(0, 6 * sizeof(float), VET_FLOAT2, VES_TEXTURE_COORDINATES); decl->addElement(0, 6 * sizeof(float), VET_FLOAT2, VES_TEXTURE_COORDINATES);
this->setMaterial(material);
setGeometry(patchToRender);
} }
SurfacePatchRenderable::~SurfacePatchRenderable(void) SurfacePatchRenderable::~SurfacePatchRenderable(void)
@ -42,6 +38,13 @@ namespace Ogre
delete mRenderOp.indexData; delete mRenderOp.indexData;
} }
void SurfacePatchRenderable::setInitialSurfacePatch(IndexedSurfacePatch* patchToRender, const String& material)
{
this->setMaterial(material);
setGeometry(patchToRender);
}
void SurfacePatchRenderable::updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender) void SurfacePatchRenderable::updateWithNewSurfacePatch(IndexedSurfacePatch* patchToRender)
{ {
setGeometry(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; return FACTORY_TYPE_NAME;
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
MovableObject* SimplePatchRenderableFactory::createInstanceImpl( const String& name, MovableObject* SurfacePatchRenderableFactory::createInstanceImpl( const String& name,
const NameValuePairList* params) const NameValuePairList* params)
{ {
@ -188,8 +191,8 @@ namespace Ogre
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
void SimplePatchRenderableFactory::destroyInstance( MovableObject* obj) void SurfacePatchRenderableFactory::destroyInstance( MovableObject* obj)
{ {
delete obj; delete obj;
}*/ }
} }