#pragma once #include "RenderTechnique.h" /** @brief Base abstract class of rendering a particle system with the spherical billboard method. */ class HierarchicalParticleSystemTechnique : virtual public RenderTechnique { public: /** @brief Constructor. @param parentRenderable the object to operate on @param parentTechniqueGroup the TechniqueGroup this RenderedTechnique is attached to */ HierarchicalParticleSystemTechnique( unsigned long startFrame, unsigned long impostorUpdateInterval, unsigned int impostorResolution, bool useDistCalc, bool perspectiveRendering, ElementaryRenderable* parentRenderable, TechniqueGroup* parentTechniqueGroup ); ~HierarchicalParticleSystemTechnique(); void update(unsigned long frameNum); protected: unsigned long impostorUpdateInterval; unsigned int impostorResolution; /** @brief offset in frame number used during update */ unsigned long startFrame; bool useDistCalc; bool perspectiveRendering; virtual RenderingRun* createChildPSysRenderingRun()=0; };