Developer Documentation
ACG::SceneGraph::LightSourceNode Class Reference

#include <ACG/Scenegraph/LightSourceNode.hh>

Inheritance diagram for ACG::SceneGraph::LightSourceNode:
ACG::SceneGraph::BaseNode

Classes

struct  LightSource
 Structure to hold options for one LightSource. More...
 

Public Member Functions

 LightSourceNode (BaseNode *_parent=0, const std::string &_name="<LightSourceNode>")
 Default constructor. Applies all properties. More...
 
virtual ~LightSourceNode ()
 Destructor. More...
 
 ACG_CLASSNAME (LightSourceNode)
 
void enter (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 set current Light Sources More...
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 restores original Light Sources More...
 
void enable (GLenum _nr)
 enable LightSource _nr More...
 
void disable (GLenum _nr)
 disable LightSource _nr More...
 
void set_position (GLenum _nr, Vec4f _pos)
 set position ( _pos = 1) or direction ( _pos = 0) of LightSource More...
 
void set_position (GLenum _nr, Vec3f _pos)
 set position for Point-LightSource More...
 
void set_direction (GLenum _nr, Vec3f _pos)
 set direction for directional LightSource More...
 
void set_ambient_color (GLenum _nr, Vec4f _color)
 set Ambient color for LightSource _nr More...
 
void set_diffuse_color (GLenum _nr, Vec4f _color)
 set Diffuse color for LightSource _nr More...
 
void set_specular_color (GLenum _nr, Vec4f _color)
 set Specular color for LightSource _nr More...
 
void fixed_position (GLenum _nr, bool _state)
 make LightSource fixed or moveable with ModelViewMatrix More...
 
- Public Member Functions inherited from ACG::SceneGraph::BaseNode
 BaseNode (BaseNode *_parent=0, std::string _name="<unknown>")
 Default constructor. More...
 
 BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
 Put this node between _parent and _child. More...
 
virtual ~BaseNode ()
 Destructor. More...
 
void delete_subtree ()
 Delete the whole subtree of this node. More...
 
virtual const std::string & className () const =0
 Return class name (implemented by the ACG_CLASSNAME macro)
 
virtual DrawModes::DrawMode availableDrawModes () const
 
virtual void boundingBox (Vec3d &, Vec3d &)
 
virtual void enter (GLState &, const DrawModes::DrawMode &)
 
virtual void enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void draw (GLState &, const DrawModes::DrawMode &)
 Draw this node using the draw modes _drawMode. More...
 
virtual void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 Deferred draw call with shader based renderer. More...
 
virtual void leave (GLState &, const DrawModes::DrawMode &)
 
virtual void leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
virtual void pick (GLState &, PickTarget)
 
virtual void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
void enablePicking (bool _enable)
 
bool pickingEnabled ()
 
virtual void mouseEvent (GLState &, QMouseEvent *)
 Handle mouse event (some interaction, e.g. modeling) More...
 
void setDirty (bool _dirty=true)
 mark node for redrawn More...
 
bool isDirty () const
 Check if node should be redrawn. More...
 
ChildIter childrenBegin ()
 Returns: begin-iterator of children. More...
 
ConstChildIter childrenBegin () const
 Same but cont. More...
 
ChildIter childrenEnd ()
 Returns: end-iterator of children. More...
 
ConstChildIter childrenEnd () const
 Same but const. More...
 
ChildRIter childrenRBegin ()
 Returns: reverse begin-iterator of children. More...
 
ConstChildRIter childrenRBegin () const
 Same but const. More...
 
ChildRIter childrenREnd ()
 Returns: reverse end-iterator of children. More...
 
ConstChildRIter childrenREnd () const
 Same but const. More...
 
void push_back (BaseNode *_node)
 Insert _node at the end of the list of children. More...
 
void remove (ChildIter _pos)
 
size_t nChildren () const
 number of children More...
 
ChildIter find (BaseNode *_node)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node. More...
 
const BaseNodeparent () const
 Get the nodes parent node. More...
 
void set_parent (BaseNode *_parent)
 Set the parent of this node. More...
 
StatusMode status () const
 Get node's status. More...
 
void set_status (StatusMode _s)
 Set the status of this node. More...
 
void hide ()
 Hide Node: set status to HideNode. More...
 
void show ()
 Show node: set status to Active. More...
 
bool visible ()
 Is node visible (status == Active)? More...
 
bool hidden ()
 Is node not visible (status != Active)? More...
 
std::string name () const
 Returns: name of node (needs not be unique) More...
 
void name (const std::string &_name)
 rename a node More...
 
unsigned int id () const
 
DrawModes::DrawMode drawMode () const
 Return the own draw modes of this node. More...
 
void drawMode (DrawModes::DrawMode _drawMode)
 
unsigned int traverseMode () const
 Return how the node should be traversed. More...
 
void setTraverseMode (unsigned int _mode)
 Set traverse mode for node. More...
 
MultipassBitMask multipassStatus () const
 Get the current multipass settings for the nodes status functions. More...
 
void setMultipassStatus (const MultipassBitMask _passStatus)
 Set multipass settings for the nodes status functions. More...
 
void multipassStatusSetActive (const unsigned int _i, bool _active)
 Set multipass status to traverse in a specific pass. More...
 
bool multipassStatusActive (const unsigned int _i) const
 Get multipass status to traverse in a specific pass. More...
 
MultipassBitMask multipassNode () const
 Get the current multipass settings for the node. More...
 
void setMultipassNode (const MultipassBitMask _passNode)
 Set multipass settings for the node. More...
 
void multipassNodeSetActive (const unsigned int _i, bool _active)
 Set Node status to traverse in a specific pass. More...
 
bool multipassNodeActive (const unsigned int _i) const
 Get Node status to traverse in a specific pass. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_tessControlShaderFile, const std::string &_tessEvalShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
 Set uniforms for shader based rendering. More...
 
const GLSL::UniformPoolgetRenderObjectUniformPool ()
 Get uniforms for shader based rendering. More...
 
void setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
 Set textures for shader based rendering. More...
 
void setRenderObjectModifier (RenderObjectModifier *_modifier)
 Set modifier for render objects. More...
 
RenderObjectModifiergetRenderObjectModifier ()
 Get render-object modifier. More...
 
void applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
 Set shaders, textures and uniforms as provided by user to a render-object. More...
 

Private Member Functions

int gl2index (GLenum _nr)
 return index in vector for GL_LIGHT* More...
 
GLenum index2gl (int _nr)
 return GL_LIGHT* for light _nr More...
 
void set_parameters (GLenum _index, LightSource &_light)
 set _light Options in OpenGL for GL_LIGHT::_index More...
 
void get_parameters (GLenum _index, LightSource &_light)
 get _light Options in OpenGL for GL_LIGHT::_index More...
 

Private Attributes

std::vector< LightSourcelights_
 store LightSources of this node More...
 
std::vector< LightSourcelightsSave_
 save old LightSources More...
 

Additional Inherited Members

- Public Types inherited from ACG::SceneGraph::BaseNode
enum  StatusMode { Active = 0x1 , HideNode = 0x2 , HideChildren = 0x4 , HideSubtree = 0x8 }
 Status modi. More...
 
enum  TraverseMode { NodeFirst = 0x1 , ChildrenFirst = 0x2 , SecondPass = 0x4 }
 Node traverse types. More...
 
typedef std::vector< BaseNode * >::const_iterator ConstChildIter
 allows to iterate over children More...
 
typedef std::vector< BaseNode * >::iterator ChildIter
 allows to iterate over children More...
 
typedef std::vector< BaseNode * >::const_reverse_iterator ConstChildRIter
 allows to reverse iterate over children More...
 
typedef std::vector< BaseNode * >::reverse_iterator ChildRIter
 allows to reverse iterate over children More...
 
enum  PASSES {
  NOPASS = 0 , ALLPASSES = 1 << 0 , PASS_1 = 1 << 1 , PASS_2 = 1 << 2 ,
  PASS_3 = 1 << 3 , PASS_4 = 1 << 4 , PASS_5 = 1 << 5 , PASS_6 = 1 << 6 ,
  PASS_7 = 1 << 7 , PASS_8 = 1 << 8
}
 This enum should be used to enable rendering of a node in different. More...
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type. More...
 

Detailed Description

Set LightSources (0 to 7) for this node and all its children.
All changes will be done in the enter() method undone in the leave() method.

Definition at line 85 of file LightSourceNode.hh.

Constructor & Destructor Documentation

◆ LightSourceNode()

ACG::SceneGraph::LightSourceNode::LightSourceNode ( BaseNode _parent = 0,
const std::string &  _name = "<LightSourceNode>" 
)

Default constructor. Applies all properties.

Definition at line 69 of file LightSourceNode.cc.

◆ ~LightSourceNode()

virtual ACG::SceneGraph::LightSourceNode::~LightSourceNode ( )
inlinevirtual

Destructor.

Definition at line 135 of file LightSourceNode.hh.

Member Function Documentation

◆ disable()

void ACG::SceneGraph::LightSourceNode::disable ( GLenum  _nr)
inline

disable LightSource _nr

Definition at line 150 of file LightSourceNode.hh.

◆ enable()

void ACG::SceneGraph::LightSourceNode::enable ( GLenum  _nr)
inline

enable LightSource _nr

Definition at line 146 of file LightSourceNode.hh.

◆ enter()

void ACG::SceneGraph::LightSourceNode::enter ( GLState _state,
const DrawModes::DrawMode _drawmode 
)
overridevirtual

set current Light Sources

transfer GL-preferences to lightsSave_

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 81 of file LightSourceNode.cc.

◆ fixed_position()

void ACG::SceneGraph::LightSourceNode::fixed_position ( GLenum  _nr,
bool  _state 
)
inline

make LightSource fixed or moveable with ModelViewMatrix

Definition at line 178 of file LightSourceNode.hh.

◆ get_parameters()

void ACG::SceneGraph::LightSourceNode::get_parameters ( GLenum  _index,
LightSource _light 
)
private

get _light Options in OpenGL for GL_LIGHT::_index

Definition at line 156 of file LightSourceNode.cc.

◆ gl2index()

int ACG::SceneGraph::LightSourceNode::gl2index ( GLenum  _nr)
inlineprivate

return index in vector for GL_LIGHT*

Definition at line 184 of file LightSourceNode.hh.

◆ index2gl()

GLenum ACG::SceneGraph::LightSourceNode::index2gl ( int  _nr)
inlineprivate

return GL_LIGHT* for light _nr

Definition at line 188 of file LightSourceNode.hh.

◆ leave()

void ACG::SceneGraph::LightSourceNode::leave ( GLState _state,
const DrawModes::DrawMode _drawmode 
)
overridevirtual

restores original Light Sources

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 120 of file LightSourceNode.cc.

◆ set_ambient_color()

void ACG::SceneGraph::LightSourceNode::set_ambient_color ( GLenum  _nr,
Vec4f  _color 
)
inline

set Ambient color for LightSource _nr

Definition at line 166 of file LightSourceNode.hh.

◆ set_diffuse_color()

void ACG::SceneGraph::LightSourceNode::set_diffuse_color ( GLenum  _nr,
Vec4f  _color 
)
inline

set Diffuse color for LightSource _nr

Definition at line 170 of file LightSourceNode.hh.

◆ set_direction()

void ACG::SceneGraph::LightSourceNode::set_direction ( GLenum  _nr,
Vec3f  _pos 
)
inline

set direction for directional LightSource

Definition at line 162 of file LightSourceNode.hh.

◆ set_parameters()

void ACG::SceneGraph::LightSourceNode::set_parameters ( GLenum  _index,
LightSource _light 
)
private

set _light Options in OpenGL for GL_LIGHT::_index

Definition at line 136 of file LightSourceNode.cc.

◆ set_position() [1/2]

void ACG::SceneGraph::LightSourceNode::set_position ( GLenum  _nr,
Vec3f  _pos 
)
inline

set position for Point-LightSource

Definition at line 158 of file LightSourceNode.hh.

◆ set_position() [2/2]

void ACG::SceneGraph::LightSourceNode::set_position ( GLenum  _nr,
Vec4f  _pos 
)
inline

set position ( _pos = 1) or direction ( _pos = 0) of LightSource

Definition at line 154 of file LightSourceNode.hh.

◆ set_specular_color()

void ACG::SceneGraph::LightSourceNode::set_specular_color ( GLenum  _nr,
Vec4f  _color 
)
inline

set Specular color for LightSource _nr

Definition at line 174 of file LightSourceNode.hh.

Member Data Documentation

◆ lights_

std::vector<LightSource> ACG::SceneGraph::LightSourceNode::lights_
private

store LightSources of this node

Definition at line 200 of file LightSourceNode.hh.

◆ lightsSave_

std::vector<LightSource> ACG::SceneGraph::LightSourceNode::lightsSave_
private

save old LightSources

Definition at line 203 of file LightSourceNode.hh.


The documentation for this class was generated from the following files: