#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, bool useVParam, String VParamRadius, bool useFParam, String FParamRadius, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup ); /** @brief Destructor. */ ~OgreHierarchicalParticleSystemTechnique(); protected: String impostorMaterialName; String childPSysScriptName; String childPSysName; unsigned char impostorTexID; bool useOwnMaterial; String VParamRadius; String FParamRadius; bool useVParam; bool useFParam; //inherited RenderingRun* createChildPSysRenderingRun(); RenderingRun* createLightVolumeRenderingRun(); virtual void impostorChanged(RenderingRun* run); virtual void impostorUpdated(RenderingRun* run); }; 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; String VParamRadius; String FParamRadius; bool useVParam; bool useFParam; };