#ifndef __VOLUME_LIGHT_SCENE_NODE_H_INCLUDED__
#define __VOLUME_LIGHT_SCENE_NODE_H_INCLUDED__
#include "IVolumeLightSceneNode.h"
#include "IMesh.h"
namespace irr
{
namespace scene
{
class CVolumeLightSceneNode : public IVolumeLightSceneNode
{
public:
CVolumeLightSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id,
const u32 subdivU = 32, const u32 subdivV = 32,
const video::SColor foot = video::SColor(51, 0, 230, 180),
const video::SColor tail = video::SColor(0, 0, 0, 0),
const core::vector3df& position = core::vector3df(0,0,0),
const core::vector3df& rotation = core::vector3df(0,0,0),
const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f));
virtual ~CVolumeLightSceneNode();
virtual void OnRegisterSceneNode();
virtual void render();
virtual const core::aabbox3d<f32>& getBoundingBox() const;
virtual video::SMaterial& getMaterial(u32 i);
virtual u32 getMaterialCount() const;
virtual ESCENE_NODE_TYPE getType() const { return ESNT_VOLUME_LIGHT; }
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const;
virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0);
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0);
virtual void setSubDivideU(const u32 inU);
virtual void setSubDivideV(const u32 inV);
virtual u32 getSubDivideU() const { return SubdivideU; }
virtual u32 getSubDivideV() const { return SubdivideV; }
virtual void setFootColor(const video::SColor inColor);
virtual void setTailColor(const video::SColor inColor);
virtual video::SColor getFootColor() const { return FootColor; }
virtual video::SColor getTailColor() const { return TailColor; }
private:
void constructLight();
IMesh* Mesh;
f32 LPDistance;
u32 SubdivideU;
u32 SubdivideV;
video::SColor FootColor;
video::SColor TailColor;
core::vector3df LightDimensions;
};
}
}
#endif