Files
geant4/source/analysis/g4tools/include/tools/sg/head_light
T
2017-12-08 12:52:30 +01:00

57 lines
1.3 KiB
Plaintext

// Copyright (C) 2010, Guy Barrand. All rights reserved.
// See the file tools.license for terms.
#ifndef tools_sg_head_light
#define tools_sg_head_light
// Directional light following cam direction.
// It should come after a camera node.
#include "torche"
namespace tools {
namespace sg {
class head_light : public torche {
TOOLS_NODE(head_light,tools::sg::head_light,torche)
public:
virtual void render(render_action& a_action) {
if(!on.value()) return;
state& state = a_action.state();
if((state.m_light+1)>=a_action.max_lights()) {
a_action.out()
<< "GL_MAX_LIGHTS (" << a_action.max_lights() << ") reached."
<< std::endl;
return;
}
float dx = direction.value()[0];
float dy = direction.value()[1];
float dz = direction.value()[2];
{mat4f mtx;
state.m_camera_orientation.value(mtx);
mtx.mul_3f(dx,dy,dz);}
state.m_GL_LIGHTING = true; //for separator
a_action.enable_light(state.m_light,vec3f(dx,dy,dz),color.value());
state.m_light++;
}
public:
head_light():torche(){}
virtual ~head_light(){}
public:
head_light(const head_light& a_from):torche(a_from){}
head_light& operator=(const head_light& a_from){
torche::operator=(a_from);
return *this;
}
};
}}
#endif