#ifndef OPENMW_COMPONENTS_SCENEUTIL_LIGHTCONTROLLER_H #define OPENMW_COMPONENTS_SCENEUTIL_LIGHTCONTROLLER_H #include #include namespace SceneUtil { class LightSource; /// @brief Controller class to handle a pulsing and/or flickering light class LightController : public SceneUtil::NodeCallback { public: enum LightType { LT_Normal, LT_Flicker, LT_FlickerSlow, LT_Pulse, LT_PulseSlow }; LightController(); void setType(LightType type); void setDiffuse(const osg::Vec4f& color); void operator()(SceneUtil::LightSource* node, osg::NodeVisitor* nv); private: LightType mType; osg::Vec4f mDiffuseColor; float mPhase; float mBrightness; double mStartTime; double mLastTime; float mTicksToAdvance; }; } #endif