g4tools  5.4.0
head_light
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_sg_head_light
5 #define tools_sg_head_light
6 
7 // Directional light following cam direction.
8 // It should come after a camera node.
9 
10 #include "torche"
11 
12 namespace tools {
13 namespace sg {
14 
15 class head_light : public torche {
17 public:
18  virtual void render(render_action& a_action) {
19  if(!on.value()) return;
20  state& state = a_action.state();
21  if((state.m_light+1)>=a_action.max_lights()) {
22  a_action.out()
23  << "GL_MAX_LIGHTS (" << a_action.max_lights() << ") reached."
24  << std::endl;
25  return;
26  }
27  float dx = direction.value()[0];
28  float dy = direction.value()[1];
29  float dz = direction.value()[2];
30  {mat4f mtx;
32  mtx.mul_dir_3f(dx,dy,dz);}
33  state.m_GL_LIGHTING = true; //for separator
34  a_action.enable_light(state.m_light,vec3f(dx,dy,dz),color.value());
35  state.m_light++;
36  }
37 public:
39  virtual ~head_light(){}
40 public:
41  head_light(const head_light& a_from):torche(a_from){}
42  head_light& operator=(const head_light& a_from){
43  torche::operator=(a_from);
44  return *this;
45  }
46 };
47 
48 }}
49 
50 #endif
tools::sg::head_light::~head_light
virtual ~head_light()
Definition: head_light:39
tools::sg::head_light::render
virtual void render(render_action &a_action)
Definition: head_light:18
tools::sg::state
Definition: state:25
tools::sg::state::m_GL_LIGHTING
bool m_GL_LIGHTING
Definition: state:248
tools::sg::torche::operator=
torche & operator=(const torche &a_from)
Definition: torche:73
tools::sg::head_light::head_light
head_light()
Definition: head_light:38
torche
TOOLS_NODE
#define TOOLS_NODE(a__class, a__sclass, a__parent)
Definition: node:324
tools::mat4f::mul_dir_3f
void mul_dir_3f(float &a_x, float &a_y, float &a_z) const
Definition: mat4f:59
tools::sg::torche
Definition: torche:18
tools::sg::head_light
Definition: head_light:15
tools::sg::color
Definition: color:16
tools::sg::state::m_camera_orientation
rotf m_camera_orientation
Definition: state:276
tools::sg::state::m_light
unsigned int m_light
Definition: state:262
tools::sg::render_action::enable_light
virtual void enable_light(unsigned int, float, float, float, float, float, float, float)=0
tools::vec3f
Definition: vec3f:13
tools::sg::render_action
Definition: render_action:24
tools::sg::head_light::operator=
head_light & operator=(const head_light &a_from)
Definition: head_light:42
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::rotf::value
bool value(vec3f &a_from, float &a_a) const
Definition: rotf:48
tools::mat4f
Definition: mat4f:12
tools::sg::render_action::max_lights
virtual unsigned int max_lights()=0
tools::sg::torche::direction
sf_vec3f direction
Definition: torche:22
tools::sg::head_light::head_light
head_light(const head_light &a_from)
Definition: head_light:41
tools::sg::bsf::value
T & value()
Definition: bsf:98
tools::sg::action::out
std::ostream & out() const
Definition: action:51
tools::sg::states::state
const sg::state & state() const
Definition: states:76
tools::sg::torche::on
sf< bool > on
Definition: torche:23