#pragma once //disable inheritance warning caused by multiple inheritance #if _WIN32 #if _MSC_VER #pragma warning(disable: 4250) #endif #endif #include "OgreRenderTechnique.h" #include "Ogre.h" using namespace Ogre; /** @brief TriggersRenderTechnique used in an OGRE environment. */ class OgreTriggersRenderTechnique : public OgreRenderTechnique { public: /** @brief Constructor. @param depthTexID the id of the texture unit state the resulting scene depth map should be bound to @param pass the pass to operate on @param parentRenderable the object to operate on @param parentTechniqueGroup the TechniqueGroup this RenderedTechnique is attached to */ OgreTriggersRenderTechnique( IllumTechniqueParams* params, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup ):OgreRenderTechnique(pass,parentRenderable,parentTechniqueGroup), RenderTechnique(parentRenderable, parentTechniqueGroup) { NameValuePairList& triggers = params->getParams(); NameValuePairList::iterator it = triggers.begin(); NameValuePairList::iterator itend = triggers.end(); while(it != itend) { parentTechniqueGroup->setMaterialForTrigger((*it).first, (*it).second); it++; } } virtual ~OgreTriggersRenderTechnique(){} }; /** @brief RenderTechniqueFactory to create OgreSBBRenderTechnique instances. */ class OgreTriggersRenderTechniqueFactory : public RenderTechniqueFactory { public: OgreTriggersRenderTechniqueFactory() { typeName = "Triggers"; } OgreRenderTechnique* createInstance(IllumTechniqueParams* params, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup) { OgreTriggersRenderTechnique* result = new OgreTriggersRenderTechnique( params, pass, parentRenderable, parentTechniqueGroup); return result; } };