#pragma once #include "TechniqueGroup.h" #include "OgreSharedRuns.h" #include "OgreRenderTechnique.h" #include "Ogre.h" using namespace Ogre; /** @brief Base class __declspec( dllexport ) of a SharedRuns in an OGRE environment. */ class __declspec( dllexport ) OgreTechniqueGroup : public TechniqueGroup, public UserDefinedObject { public: ~OgreTechniqueGroup(); //inherited void addRenderTechnique(RenderTechnique* technique); //inherited void update(unsigned long frameNum); //inherited void runChanged(RenderingRunType runType, RenderingRun* run); //inherited void runUpdated(RenderingRunType runType, RenderingRun* run); //inherited void updateBounds() { renderTechniques.at(0)->getParentRenderable()->updateBounds(); parentSharedRuns->updateBounds(); } String getMaterialNameForTrigger(String trigger) { if(triggeredMaterials.find(trigger) == triggeredMaterials.end()) return ""; else return triggeredMaterials[trigger]; } void setMaterialForTrigger(String trigger, String material) { triggeredMaterials[trigger] = material; } protected: std::map triggeredMaterials; /** @brief Collection of OgreRenderTechniques All messages will be forwarded to each element of this vector. */ std::vector renderTechniques; };