You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
923 B
C++
43 lines
923 B
C++
#ifndef OPENMW_COMPONENTS_SCENEUTIL_LIGHTCONTROLLER_H
|
|
#define OPENMW_COMPONENTS_SCENEUTIL_LIGHTCONTROLLER_H
|
|
|
|
#include <osg/NodeCallback>
|
|
#include <osg/Vec4f>
|
|
|
|
namespace SceneUtil
|
|
{
|
|
|
|
/// @brief Controller class to handle a pulsing and/or flickering light
|
|
/// @note Must be set on a SceneUtil::LightSource.
|
|
class LightController : public osg::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);
|
|
|
|
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv);
|
|
|
|
private:
|
|
LightType mType;
|
|
osg::Vec4f mDiffuseColor;
|
|
float mPhase;
|
|
float mDeltaCount;
|
|
int mDirection;
|
|
double mLastTime;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|