import net.sf.jirr.*;
public class CirclingLight extends BaseObject
{
protected ISceneNode node = null;
protected vector3df rotation = null;
public CirclingLight()
{
}
public void startupCirclingLight(vector3df centre, vector3df offset, vector3df rotation, SColorf color)
{
super.startupGameObject();
this.rotation = rotation;
// create light
node = EngineManager.getInstance().getSceneManager().addEmptySceneNode();
node.setPosition(centre);
ISceneNode light = EngineManager.getInstance().getSceneManager().addLightSceneNode(
node,
offset,
color,
1000.0f);
// attach billboard to light
ISceneNode billboard = EngineManager.getInstance().getSceneManager().addBillboardSceneNode(
light,
new dimension2df(5, 5));
billboard.setMaterialFlag(E_MATERIAL_FLAG.EMF_LIGHTING, false);
billboard.setMaterialType(E_MATERIAL_TYPE.EMT_TRANSPARENT_ADD_COLOR);
billboard.setMaterialTexture(0, EngineManager.getInstance().getVideoDriver().getTexture("particlewhite.bmp"));
}
public void shutdown()
{
node.remove();
node = null;
super.shutdown();
}
public void enterFrame(double dt)
{
vector3df currentRotation = node.getRotation();
vector3df newRotation = new vector3df();
newRotation.set(
currentRotation.getX() + rotation.getX() * (float)dt,
currentRotation.getY() + rotation.getY() * (float)dt,
currentRotation.getZ() + rotation.getZ() * (float)dt);
node.setRotation(newRotation);
}
}
|