#pragma once //disable inheritance warning caused by multiple inheritance #if _WIN32 #if _MSC_VER #pragma warning(disable: 4250) #endif #endif #include "OgreRenderTechnique.h" #include "HierarchicalParticleSystemTechnique.h" /** @brief CausticCasterRenderTechnique used in an OGRE environment. */ class OgreHierarchicalParticleSystemTechnique : public OgreRenderTechnique, public HierarchicalParticleSystemTechnique { public: OgreHierarchicalParticleSystemTechnique(unsigned long startFrame, unsigned long impostorUpdateInterval, unsigned int impostorResolution, unsigned char impostorTexID, bool useDistCalc, bool perspectiveRendering, String childPSysScriptName, bool useOwnMaterial, String impostorMaterialName, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup ); /** @brief Destructor. */ ~OgreHierarchicalParticleSystemTechnique(); protected: String impostorMaterialName; String childPSysScriptName; String childPSysName; unsigned char impostorTexID; bool useOwnMaterial; //inherited RenderingRun* createChildPSysRenderingRun(); }; class OgreHierarchicalParticleSystemTechniqueFactory : public RenderTechniqueFactory { public: OgreHierarchicalParticleSystemTechniqueFactory(); OgreRenderTechnique* createInstance(IllumTechniqueParams* params, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup); unsigned long impostorUpdateInterval; unsigned int impostorResolution; unsigned long startFrame; bool useDistCalc; unsigned char impostorTexID; bool perspectiveRendering; String impostorMaterialName; String childPSysScriptName; bool useOwnMaterial; };