Developer Documentation
ACG::SceneGraph::ArrowNode Class Reference

#include <ACG/Scenegraph/ArrowNode.hh>

Inheritance diagram for ACG::SceneGraph::ArrowNode:
ACG::SceneGraph::MaterialNode ACG::SceneGraph::ACG::SceneGraph::BaseNode

Classes

struct  Arrow
 

Public Member Functions

 ArrowNode (BaseNode *_parent=0, std::string _name="<ArrowNode>")
 default constructor
 
 ~ArrowNode ()
 destructor
 
 ACG_CLASSNAME (ArrowNode)
 static name of this class
 
DrawModes::DrawMode availableDrawModes () const override
 return available draw modes
 
void boundingBox (Vec3d &_bbMin, Vec3d &_bbMax) override
 update bounding box
 
void reserve (int _n)
 reserve mem for _n arrows
 
int addArrow (const Vec3f &_start, const Vec3f &_dir, const Vec3f &_normal=Vec3f(0.0f, 1.0f, 0.0f), const Vec3f &_scale=Vec3f(1.0f, 1.0f, 1.0f), const Vec4uc &_color=Vec4uc(82, 82, 82, 255))
 Add an arrow to the node. More...
 
int addArrow (const Vec3f &_start, const Vec3f &_dir, const Vec3f &_normal, const Vec3f &_scale, const Vec4f &_color)
 Add an arrow to the node. More...
 
int addArrow (const Vec3d &_start, const Vec3d &_dir, const Vec3d &_normal=Vec3d(0.0, 1.0, 0.0), const Vec3d &_scale=Vec3d(1.0, 1.0, 1.0), const Vec4uc &_color=Vec4uc(82, 82, 82, 255))
 Add an arrow to the node. More...
 
int addArrow (const Vec3d &_start, const Vec3d &_dir, const Vec3d &_normal, const Vec3d &_scale, const Vec4f &_color)
 Add an arrow to the node. More...
 
Vec3f arrowStart (int _arrowID) const
 Return the start position of an arrow. More...
 
void arrowStart (int _arrowID, const Vec3f &_start)
 Set start point of an already added arrow. More...
 
Vec3f arrowDir (int _arrowID) const
 Return the direction of an arrow. More...
 
void arrowDir (int _arrowID, const Vec3f &_dir)
 Set direction of an already added arrow. More...
 
Vec3f arrowNormal (int _arrowID) const
 Return the normal of an arrow. More...
 
void arrowNormal (int _arrowID, const Vec3f &_normal)
 Set normal of an already added arrow. More...
 
Vec3f arrowScale (int _arrowID) const
 Return the scale of an arrow. More...
 
void arrowScale (int _arrowID, const Vec3f &_scale)
 Set the scale of an already added arrow. More...
 
Vec4uc arrowColor (int _arrowID) const
 Return the color of an arrow. More...
 
void arrowColor (int _arrowID, const Vec4uc &_color)
 Set the color of an already added arrow. More...
 
void clear ()
 clear arrows
 
int n_arrows () const
 number of arrows
 
void draw (GLState &_state, const DrawModes::DrawMode &_drawMode) override
 draw arrows
 
void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const ACG::SceneGraph::Material *_mat) override
 Add the objects to the given renderer. More...
 
- Public Member Functions inherited from ACG::SceneGraph::MaterialNode
 MaterialNode (BaseNode *_parent=0, const std::string &_name="<MaterialNode>", unsigned int _applyProperties=(All &~BackFaceCulling))
 Default constructor. Applies all properties.
 
virtual ~MaterialNode ()
 Destructor.
 
void read (std::istream &_is)
 read MaterialFile
 
float alpha_value ()
 get current alpha value for alpha_test
 
bool blending ()
 
GLenum blending_param1 ()
 
GLenum blending_param2 ()
 
void enable_blending (GLenum _p1=GL_SRC_ALPHA, GLenum _p2=GL_ONE_MINUS_SRC_ALPHA)
 enable blending with Parameters (_p1, _p2)
 
void disable_blending ()
 disable blending
 
bool backface_culling ()
 
void enable_backface_culling ()
 enable backface culling (not active by default, see applyProperties)
 
void disable_backface_culling ()
 disable backface culling (not active by default, see applyProperties)
 
unsigned int applyProperties () const
 get properties that will be applied (OR'ed ApplyProperties)
 
void applyProperties (unsigned int _applyProperties)
 set properties that will be applied (OR'ed ApplyProperties)
 
ACG::SceneGraph::Materialmaterial ()
 Get material object reference.
 
void set_material (const ACG::SceneGraph::Material &_m)
 Set material object.
 
 ACG_CLASSNAME (MaterialNode)
 set current GL-color and GL-material
 
void enter (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 set current GL-color and GL-material
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 restores original GL-color and GL-material
 
void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) override
 Do nothing in picking.
 
void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) override
 Do nothing in picking.
 
void set_color (const Vec4f &_c)
 set color (base, ambient, diffuse, specular) based on _c
 
void set_random_color ()
 Generates a random color and sets it.
 
void set_base_color (const Vec4f &_c)
 set the base color ( Same as set_emission(const Vec4f& _c) )
 
const Vec4fbase_color () const
 get the base color ( same as emission() )
 
void set_emission (const Vec4f &_c)
 set emission ( same as set_base_color(const Vec4f& _c) )
 
const Vec4femission () const
 get emission ( same as base_color() )
 
void set_ambient_color (const Vec4f &_a)
 set the ambient color.
 
const Vec4fambient_color () const
 get the ambient color.
 
void set_diffuse_color (const Vec4f &_d)
 set the diffuse color.
 
const Vec4fdiffuse_color () const
 get the diffuse color.
 
void set_specular_color (const Vec4f &_s)
 set the specular color
 
const Vec4fspecular_color () const
 get the specular color
 
void set_overlay_color (const Vec4f &_s)
 set the overlay color
 
const Vec4foverlay_color () const
 get the overlay color
 
void colorMaterial (const bool _cm)
 Set colorMaterial.
 
void enable_color_material ()
 Enable Color Material.
 
void disable_color_material ()
 Disable Color Material.
 
bool colorMaterial ()
 get colorMaterial state
 
void set_shininess (float _s)
 set shininess
 
float shininess () const
 get shininess
 
void set_reflectance (double _m)
 set reflectance
 
double reflectance () const
 get reflectance
 
void set_indexOfRefraction (double _m)
 set index of refraction
 
double indexOfRefraction () const
 get index of refraction
 
void set_refractive (bool _r)
 set refractive flag
 
bool isRefractive () const
 get refractive flag
 
void set_point_size (float _sz)
 set point size (default: 1.0)
 
float point_size () const
 get point size
 
void set_line_width (float _sz)
 set line width (default: 1.0)
 
float line_width () const
 get line width
 
void set_round_points (bool _b)
 set round points enabled
 
bool round_points () const
 get round points enabled
 
void set_line_smooth (bool _b)
 set: smooth lines enabled
 
bool line_smooth () const
 get: rsmooth lines enabled
 
void enable_alpha_test (float _clip)
 enable alpha test (draw pixels if alpha >= _clip)
 
void disable_alpha_test ()
 disable alpha test
 
bool alpha_test ()
 Return state of Alpha test.
 
void enable_multisampling ()
 Enable Multisampling.
 
void disable_multisampling ()
 enable alpha test (draw pixels if alpha >= _clip)
 
bool multiSampling ()
 Get state of multisampling.
 
void set_multisampling (bool _state)
 Set state of multisampling.
 
- Public Member Functions inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
 BaseNode (BaseNode *_parent=0, std::string _name="<unknown>")
 Default constructor.
 
 BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
 Put this node between _parent and _child.
 
virtual ~BaseNode ()
 Destructor.
 
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 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)
 
void setDirty (bool _dirty=true)
 mark node for redrawn
 
bool isDirty () const
 Check if node should be redrawn.
 
ChildIter childrenBegin ()
 Returns: begin-iterator of children.
 
ConstChildIter childrenBegin () const
 Same but cont.
 
ChildIter childrenEnd ()
 Returns: end-iterator of children.
 
ConstChildIter childrenEnd () const
 Same but const.
 
ChildRIter childrenRBegin ()
 Returns: reverse begin-iterator of children.
 
ConstChildRIter childrenRBegin () const
 Same but const.
 
ChildRIter childrenREnd ()
 Returns: reverse end-iterator of children.
 
ConstChildRIter childrenREnd () const
 Same but const.
 
void push_back (BaseNode *_node)
 Insert _node at the end of the list of children.
 
void remove (ChildIter _pos)
 
size_t nChildren () const
 number of children
 
ChildIter find (BaseNode *_node)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node.
 
const BaseNodeparent () const
 Get the nodes parent node.
 
void set_parent (BaseNode *_parent)
 Set the parent of this node. More...
 
StatusMode status () const
 Get node's status.
 
void set_status (StatusMode _s)
 Set the status of this node.
 
void hide ()
 Hide Node: set status to HideNode.
 
void show ()
 Show node: set status to Active.
 
bool visible ()
 Is node visible (status == Active)?
 
bool hidden ()
 Is node not visible (status != Active)?
 
std::string name () const
 Returns: name of node (needs not be unique)
 
void name (const std::string &_name)
 rename a node
 
unsigned int id () const
 
DrawModes::DrawMode drawMode () const
 Return the own draw modes of this node.
 
void drawMode (DrawModes::DrawMode _drawMode)
 
unsigned int traverseMode () const
 Return how the node should be traversed.
 
void setTraverseMode (unsigned int _mode)
 Set traverse mode for node.
 
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

void createArrowMesh ()
 
GLMatrixf computeWorldMatrix (int _arrow) const
 
GLMatrixf readWorldMatrix (int _arrow) const
 
void updateInstanceData ()
 
void updateInstanceBuffer ()
 
int instanceDataOffset (int _arrow) const
 
int instanceDataSize () const
 

Private Attributes

std::vector< Arrowarrows_
 
int numVertices_
 
int numIndices_
 
GeometryBuffer vertexBuffer_
 
IndexBuffer indexBuffer_
 
VertexDeclaration vertexDecl_
 
Vec3f localArrowMin_
 
Vec3f localArrowMax_
 
std::vector< float > instanceData_
 
GeometryBuffer instanceBuffer_
 
VertexDeclaration vertexDeclInstanced_
 
bool invalidateInstanceData_
 
bool invalidateInstanceBuffer_
 
int supportsInstancing_
 

Additional Inherited Members

- Public Types inherited from ACG::SceneGraph::MaterialNode
enum  ApplyProperties {
  None =0, All =0xffff, BaseColor =1, Material =2,
  PointSize =4, LineWidth =8, RoundPoints =16, LineSmooth =32,
  AlphaTest =64, Blending =128, BackFaceCulling =256, ColorMaterial =512,
  MultiSampling =1024
}
 Apply which properties? Others will be ignored. Values may be OR'ed. More...
 
- Public Types inherited from ACG::SceneGraph::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
 
typedef std::vector< BaseNode * >::iterator ChildIter
 allows to iterate over children
 
typedef std::vector< BaseNode * >::const_reverse_iterator ConstChildRIter
 allows to reverse iterate over children
 
typedef std::vector< BaseNode * >::reverse_iterator ChildRIter
 allows to reverse iterate over children
 
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.
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type.
 

Detailed Description

ArrowNode renders a set of arrows.

Definition at line 78 of file ArrowNode.hh.

Member Function Documentation

◆ addArrow() [1/4]

int ACG::SceneGraph::ArrowNode::addArrow ( const Vec3f _start,
const Vec3f _dir,
const Vec3f _normal = Vec3f(0.0f, 1.0f, 0.0f),
const Vec3f _scale = Vec3f(1.0f, 1.0f, 1.0f),
const Vec4uc _color = Vec4uc(82, 82, 82, 255) 
)

Add an arrow to the node.

Parameters
_startStart position of the arrow
_dirDirection of the arrow
_normalNormal vector on the top surface of the arrow. Gets orthonormalized to _dir internally. If 0 or collinear to _dir, a random normal is chosen.
_scaleUniform scaling factor of the arrow. This is also the length of the arrow.
_colorArrow color
Returns
ID of the arrow

Definition at line 374 of file ArrowNode.cc.

◆ addArrow() [2/4]

int ACG::SceneGraph::ArrowNode::addArrow ( const Vec3f _start,
const Vec3f _dir,
const Vec3f _normal,
const Vec3f _scale,
const Vec4f _color 
)

Add an arrow to the node.

Parameters
_startStart position of the arrow
_dirDirection of the arrow
_normalNormal vector on the top surface of the arrow. Gets orthonormalized to _dir internally. If 0 or collinear to _dir, a random normal is chosen.
_scaleUniform scaling factor of the arrow. This is also the length of the arrow.
_colorArrow color
Returns
id of the arrow

Definition at line 395 of file ArrowNode.cc.

◆ addArrow() [3/4]

int ACG::SceneGraph::ArrowNode::addArrow ( const Vec3d _start,
const Vec3d _dir,
const Vec3d _normal = Vec3d(0.0, 1.0, 0.0),
const Vec3d _scale = Vec3d(1.0, 1.0, 1.0),
const Vec4uc _color = Vec4uc(82, 82, 82, 255) 
)

Add an arrow to the node.

Parameters
_startStart position of the arrow
_dirDirection of the arrow
_normalNormal vector on the top surface of the arrow. Gets orthonormalized to _dir internally. If 0 or collinear to _dir, a random normal is chosen.
_scaleUniform scaling factor of the arrow. This is also the length of the arrow.
_colorArrow color
Returns
id of the arrow

Definition at line 428 of file ArrowNode.cc.

◆ addArrow() [4/4]

int ACG::SceneGraph::ArrowNode::addArrow ( const Vec3d _start,
const Vec3d _dir,
const Vec3d _normal,
const Vec3d _scale,
const Vec4f _color 
)

Add an arrow to the node.

Parameters
_startStart position of the arrow
_dirDirection of the arrow
_normalNormal vector on the top surface of the arrow. Gets orthonormalized to _dir internally. If 0 or collinear to _dir, a random normal is chosen.
_scaleUniform scaling factor of the arrow. This is also the length of the arrow.
_colorArrow color
Returns
id of the arrow

Definition at line 435 of file ArrowNode.cc.

◆ arrowColor() [1/2]

Vec4uc ACG::SceneGraph::ArrowNode::arrowColor ( int  _arrowID) const

Return the color of an arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
Returns
Arrow color

Definition at line 580 of file ArrowNode.cc.

◆ arrowColor() [2/2]

void ACG::SceneGraph::ArrowNode::arrowColor ( int  _arrowID,
const Vec4uc _color 
)

Set the color of an already added arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
_scaleArrow color

Definition at line 585 of file ArrowNode.cc.

◆ arrowDir() [1/2]

Vec3f ACG::SceneGraph::ArrowNode::arrowDir ( int  _arrowID) const

Return the direction of an arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
Returns
Direction of the arrow

Definition at line 545 of file ArrowNode.cc.

◆ arrowDir() [2/2]

void ACG::SceneGraph::ArrowNode::arrowDir ( int  _arrowID,
const Vec3f _dir 
)

Set direction of an already added arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
_dirDirection of the arrow

Definition at line 550 of file ArrowNode.cc.

◆ arrowNormal() [1/2]

Vec3f ACG::SceneGraph::ArrowNode::arrowNormal ( int  _arrowID) const

Return the normal of an arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
Returns
Normal of the arrow

Definition at line 557 of file ArrowNode.cc.

◆ arrowNormal() [2/2]

void ACG::SceneGraph::ArrowNode::arrowNormal ( int  _arrowID,
const Vec3f _normal 
)

Set normal of an already added arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
_dirNormal of the arrow

Definition at line 562 of file ArrowNode.cc.

◆ arrowScale() [1/2]

Vec3f ACG::SceneGraph::ArrowNode::arrowScale ( int  _arrowID) const

Return the scale of an arrow.

Scaling vector: width, length, height

Parameters
_arrowIDID of the arrow that was returned by addArrow()
Returns
Arrow scale

Definition at line 569 of file ArrowNode.cc.

◆ arrowScale() [2/2]

void ACG::SceneGraph::ArrowNode::arrowScale ( int  _arrowID,
const Vec3f _scale 
)

Set the scale of an already added arrow.

Scaling vector: width, length, height

Parameters
_arrowIDID of the arrow that was returned by addArrow()
_scaleArrow scale

Definition at line 574 of file ArrowNode.cc.

◆ arrowStart() [1/2]

Vec3f ACG::SceneGraph::ArrowNode::arrowStart ( int  _arrowID) const

Return the start position of an arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
Returns
Start position of the arrow

Definition at line 534 of file ArrowNode.cc.

◆ arrowStart() [2/2]

void ACG::SceneGraph::ArrowNode::arrowStart ( int  _arrowID,
const Vec3f _start 
)

Set start point of an already added arrow.

Parameters
_arrowIDID of the arrow that was returned by addArrow()
_startStart position of the arrow

Definition at line 539 of file ArrowNode.cc.

◆ getRenderObjects()

void ACG::SceneGraph::ArrowNode::getRenderObjects ( IRenderer _renderer,
GLState _state,
const DrawModes::DrawMode _drawMode,
const ACG::SceneGraph::Material _mat 
)
override

Add the objects to the given renderer.

Parameters
_rendererThe renderer which will be used. Add your geometry into this class
_stateThe current GL State when this object is called
_drawModeThe active draw mode
_matCurrent material

Definition at line 266 of file ArrowNode.cc.


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