Irrlicht 3D Engine
ISceneNode.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_SCENE_NODE_H_INCLUDED__
6 #define __I_SCENE_NODE_H_INCLUDED__
7 
9 #include "ESceneNodeTypes.h"
10 #include "ECullingTypes.h"
11 #include "EDebugSceneTypes.h"
12 #include "ISceneNodeAnimator.h"
13 #include "ITriangleSelector.h"
14 #include "SMaterial.h"
15 #include "irrString.h"
16 #include "aabbox3d.h"
17 #include "matrix4.h"
18 #include "irrList.h"
19 #include "IAttributes.h"
20 
21 namespace irr
22 {
23 namespace scene
24 {
26 
31 
33 
41  {
42  public:
43 
45  ISceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id=-1,
46  const core::vector3df& position = core::vector3df(0,0,0),
47  const core::vector3df& rotation = core::vector3df(0,0,0),
48  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
49  : RelativeTranslation(position), RelativeRotation(rotation), RelativeScale(scale),
50  Parent(0), SceneManager(mgr), TriangleSelector(0), ID(id),
52  IsVisible(true), IsDebugObject(false)
53  {
54  if (parent)
55  parent->addChild(this);
56 
58  }
59 
60 
62  virtual ~ISceneNode()
63  {
64  // delete all children
65  removeAll();
66 
67  // delete all animators
69  for (; ait != Animators.end(); ++ait)
70  (*ait)->drop();
71 
72  if (TriangleSelector)
74  }
75 
76 
78 
91  virtual void OnRegisterSceneNode()
92  {
93  if (IsVisible)
94  {
96  for (; it != Children.end(); ++it)
97  (*it)->OnRegisterSceneNode();
98  }
99  }
100 
101 
103 
108  virtual void OnAnimate(u32 timeMs)
109  {
110  if (IsVisible)
111  {
112  // animate this node with all animators
113 
115  while (ait != Animators.end())
116  {
117  // continue to the next node before calling animateNode()
118  // so that the animator may remove itself from the scene
119  // node without the iterator becoming invalid
120  ISceneNodeAnimator* anim = *ait;
121  ++ait;
122  if ( anim->isEnabled() )
123  {
124  anim->animateNode(this, timeMs);
125  }
126  }
127 
128  // update absolute position
130 
131  // perform the post render process on all children
132 
133  ISceneNodeList::Iterator it = Children.begin();
134  for (; it != Children.end(); ++it)
135  (*it)->OnAnimate(timeMs);
136  }
137  }
138 
139 
141  virtual void render() = 0;
142 
143 
145 
146  virtual const c8* getName() const
147  {
148  return Name.c_str();
149  }
150 
151 
153 
154  virtual void setName(const c8* name)
155  {
156  Name = name;
157  }
158 
159 
161 
162  virtual void setName(const core::stringc& name)
163  {
164  Name = name;
165  }
166 
167 
169 
176  virtual const core::aabbox3d<f32>& getBoundingBox() const = 0;
177 
178 
180 
184  {
187  return box;
188  }
189 
192 
196  {
197  edges.set_used(8);
198  getBoundingBox().getEdges( edges.pointer() );
199  for ( u32 i=0; i<8; ++i )
201  }
202 
204 
211  {
212  return AbsoluteTransformation;
213  }
214 
215 
217 
222  {
223  core::matrix4 mat;
226 
227  if (RelativeScale != core::vector3df(1.f,1.f,1.f))
228  {
229  core::matrix4 smat;
230  smat.setScale(RelativeScale);
231  mat *= smat;
232  }
233 
234  return mat;
235  }
236 
237 
239 
243  virtual bool isVisible() const
244  {
245  return IsVisible;
246  }
247 
249 
251  virtual bool isTrulyVisible() const
252  {
253  if(!IsVisible)
254  return false;
255 
256  if(!Parent)
257  return true;
258 
259  return Parent->isTrulyVisible();
260  }
261 
263 
267  virtual void setVisible(bool isVisible)
268  {
270  }
271 
272 
274 
276  virtual s32 getID() const
277  {
278  return ID;
279  }
280 
281 
283 
285  virtual void setID(s32 id)
286  {
287  ID = id;
288  }
289 
290 
292 
295  virtual void addChild(ISceneNode* child)
296  {
297  if (child && (child != this))
298  {
299  // Change scene manager?
300  if (SceneManager != child->SceneManager)
302 
303  child->grab();
304  child->remove(); // remove from old parent
305  Children.push_back(child);
306  child->Parent = this;
307  }
308  }
309 
310 
312 
317  virtual bool removeChild(ISceneNode* child)
318  {
319  ISceneNodeList::Iterator it = Children.begin();
320  for (; it != Children.end(); ++it)
321  if ((*it) == child)
322  {
323  (*it)->Parent = 0;
324  (*it)->drop();
325  Children.erase(it);
326  return true;
327  }
328 
329  return false;
330  }
331 
332 
334 
337  virtual void removeAll()
338  {
339  ISceneNodeList::Iterator it = Children.begin();
340  for (; it != Children.end(); ++it)
341  {
342  (*it)->Parent = 0;
343  (*it)->drop();
344  }
345 
346  Children.clear();
347  }
348 
349 
351 
353  virtual void remove()
354  {
355  if (Parent)
356  Parent->removeChild(this);
357  }
358 
359 
361 
362  virtual void addAnimator(ISceneNodeAnimator* animator)
363  {
364  if (animator)
365  {
366  Animators.push_back(animator);
367  animator->grab();
368  }
369  }
370 
371 
373 
375  {
376  return Animators;
377  }
378 
379 
381 
384  virtual void removeAnimator(ISceneNodeAnimator* animator)
385  {
387  for (; it != Animators.end(); ++it)
388  {
389  if ((*it) == animator)
390  {
391  (*it)->drop();
392  Animators.erase(it);
393  return;
394  }
395  }
396  }
397 
398 
400 
402  virtual void removeAnimators()
403  {
405  for (; it != Animators.end(); ++it)
406  (*it)->drop();
407 
408  Animators.clear();
409  }
410 
411 
413 
421  {
423  }
424 
425 
427 
428  virtual u32 getMaterialCount() const
429  {
430  return 0;
431  }
432 
433 
435 
439  void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue)
440  {
441  for (u32 i=0; i<getMaterialCount(); ++i)
442  getMaterial(i).setFlag(flag, newvalue);
443  }
444 
445 
447 
450  void setMaterialTexture(u32 textureLayer, video::ITexture* texture)
451  {
452  if (textureLayer >= video::MATERIAL_MAX_TEXTURES)
453  return;
454 
455  for (u32 i=0; i<getMaterialCount(); ++i)
456  getMaterial(i).setTexture(textureLayer, texture);
457  }
458 
459 
461 
463  {
464  for (u32 i=0; i<getMaterialCount(); ++i)
465  getMaterial(i).MaterialType = newType;
466  }
467 
468 
470 
474  virtual const core::vector3df& getScale() const
475  {
476  return RelativeScale;
477  }
478 
479 
481 
482  virtual void setScale(const core::vector3df& scale)
483  {
484  RelativeScale = scale;
485  }
486 
487 
489 
493  virtual const core::vector3df& getRotation() const
494  {
495  return RelativeRotation;
496  }
497 
498 
500 
502  virtual void setRotation(const core::vector3df& rotation)
503  {
504  RelativeRotation = rotation;
505  }
506 
507 
509 
512  virtual const core::vector3df& getPosition() const
513  {
514  return RelativeTranslation;
515  }
516 
517 
519 
521  virtual void setPosition(const core::vector3df& newpos)
522  {
523  RelativeTranslation = newpos;
524  }
525 
526 
528 
537  {
539  }
540 
541 
543 
549  {
550  AutomaticCullingState = state;
551  }
552 
553 
555 
557  {
558  return AutomaticCullingState;
559  }
560 
561 
563 
566  virtual void setDebugDataVisible(u32 state)
567  {
568  DebugDataVisible = state;
569  }
570 
572 
575  {
576  return DebugDataVisible;
577  }
578 
579 
581 
583  void setIsDebugObject(bool debugObject)
584  {
585  IsDebugObject = debugObject;
586  }
587 
588 
590 
593  bool isDebugObject() const
594  {
595  return IsDebugObject;
596  }
597 
598 
600 
602  {
603  return Children;
604  }
605 
606 
608 
609  virtual void setParent(ISceneNode* newParent)
610  {
611  grab();
612  remove();
613 
614  Parent = newParent;
615 
616  if (Parent)
617  Parent->addChild(this);
618 
619  drop();
620  }
621 
622 
624 
634  {
635  return TriangleSelector;
636  }
637 
638 
640 
648  virtual void setTriangleSelector(ITriangleSelector* selector)
649  {
650  if (TriangleSelector != selector)
651  {
652  if (TriangleSelector)
654 
655  TriangleSelector = selector;
656  if (TriangleSelector)
658  }
659  }
660 
661 
663 
665  virtual void updateAbsolutePosition()
666  {
667  if (Parent)
668  {
671  }
672  else
674  }
675 
676 
678 
680  {
681  return Parent;
682  }
683 
684 
686 
687  virtual ESCENE_NODE_TYPE getType() const
688  {
689  return ESNT_UNKNOWN;
690  }
691 
692 
694 
701  {
702  if (!out)
703  return;
704  out->addString("Name", Name.c_str());
705  out->addInt("Id", ID );
706 
707  out->addVector3d("Position", getPosition() );
708  out->addVector3d("Rotation", getRotation() );
709  out->addVector3d("Scale", getScale() );
710 
711  out->addBool("Visible", IsVisible );
712  out->addInt("AutomaticCulling", AutomaticCullingState);
713  out->addInt("DebugDataVisible", DebugDataVisible );
714  out->addBool("IsDebugObject", IsDebugObject );
715  }
716 
717 
719 
726  {
727  if (!in)
728  return;
729  Name = in->getAttributeAsString("Name", Name);
730  ID = in->getAttributeAsInt("Id", ID);
731 
735 
736  IsVisible = in->getAttributeAsBool("Visible", IsVisible);
737  if (in->existsAttribute("AutomaticCulling"))
738  {
739  s32 tmpState = in->getAttributeAsEnumeration("AutomaticCulling",
741  if (tmpState != -1)
742  AutomaticCullingState = (u32)tmpState;
743  else
744  AutomaticCullingState = in->getAttributeAsInt("AutomaticCulling");
745  }
746 
747  DebugDataVisible = in->getAttributeAsInt("DebugDataVisible", DebugDataVisible);
748  IsDebugObject = in->getAttributeAsBool("IsDebugObject", IsDebugObject);
749 
751  }
752 
754 
757  virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0)
758  {
759  return 0; // to be implemented by derived classes
760  }
761 
763 
764  virtual ISceneManager* getSceneManager(void) const { return SceneManager; }
765 
766  protected:
767 
769 
773  void cloneMembers(ISceneNode* toCopyFrom, ISceneManager* newManager)
774  {
775  Name = toCopyFrom->Name;
778  RelativeRotation = toCopyFrom->RelativeRotation;
779  RelativeScale = toCopyFrom->RelativeScale;
780  ID = toCopyFrom->ID;
783  DebugDataVisible = toCopyFrom->DebugDataVisible;
784  IsVisible = toCopyFrom->IsVisible;
785  IsDebugObject = toCopyFrom->IsDebugObject;
786 
787  if (newManager)
788  SceneManager = newManager;
789  else
790  SceneManager = toCopyFrom->SceneManager;
791 
792  // clone children
793 
794  ISceneNodeList::Iterator it = toCopyFrom->Children.begin();
795  for (; it != toCopyFrom->Children.end(); ++it)
796  (*it)->clone(this, newManager);
797 
798  // clone animators
799 
800  ISceneNodeAnimatorList::Iterator ait = toCopyFrom->Animators.begin();
801  for (; ait != toCopyFrom->Animators.end(); ++ait)
802  {
803  ISceneNodeAnimator* anim = (*ait)->createClone(this, SceneManager);
804  if (anim)
805  {
806  addAnimator(anim);
807  anim->drop();
808  }
809  }
810  }
811 
814  void setSceneManager(ISceneManager* newManager)
815  {
816  SceneManager = newManager;
817 
818  ISceneNodeList::Iterator it = Children.begin();
819  for (; it != Children.end(); ++it)
820  (*it)->setSceneManager(newManager);
821  }
822 
825 
828 
831 
834 
837 
840 
843 
846 
849 
852 
855 
858 
861 
863  bool IsVisible;
864 
867  };
868 
869 
870 } // end namespace scene
871 } // end namespace irr
872 
873 #endif
874 
virtual void getTransformedBoundingBoxEdges(core::array< core::vector3d< f32 > > &edges) const
Definition: ISceneNode.h:195
ISceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id=-1, const core::vector3df &position=core::vector3df(0, 0, 0), const core::vector3df &rotation=core::vector3df(0, 0, 0), const core::vector3df &scale=core::vector3df(1.0f, 1.0f, 1.0f))
Constructor.
Definition: ISceneNode.h:45
Interface to return triangles with specific properties.
bool drop() const
Drops the object. Decrements the reference counter by one.
An object which is able to serialize and deserialize its attributes into an attributes object.
Provides a generic interface for attributes and their values and the possibility to serialize them.
Definition: IAttributes.h:41
virtual s32 getID() const
Get the id of the scene node.
Definition: ISceneNode.h:276
virtual void addInt(const c8 *attributeName, s32 value)=0
Adds an attribute as integer.
virtual ESCENE_NODE_TYPE getType() const
Returns type of the scene node.
Definition: ISceneNode.h:687
E_MATERIAL_TYPE MaterialType
Type of the material. Specifies how everything is blended together.
Definition: SMaterial.h:366
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
core::stringc Name
Name of the scene node.
Definition: ISceneNode.h:824
virtual bool isVisible() const
Returns whether the node should be visible (if all of its parents are visible).
Definition: ISceneNode.h:243
virtual const c8 * getName() const
Returns the name of the node.
Definition: ISceneNode.h:146
virtual core::stringc getAttributeAsString(const c8 *attributeName, const core::stringc &defaultNotFound=core::stringc()) const =0
virtual bool getAttributeAsBool(const c8 *attributeName, bool defaultNotFound=false) const =0
u32 getAutomaticCulling() const
Gets the automatic culling state.
Definition: ISceneNode.h:556
virtual core::vector3df getAbsolutePosition() const
Gets the absolute position of the node in world coordinates.
Definition: ISceneNode.h:536
void setTexture(u32 i, ITexture *tex)
Sets the i-th texture.
Definition: SMaterial.h:581
virtual void setName(const c8 *name)
Sets the name of the node.
Definition: ISceneNode.h:154
virtual void animateNode(ISceneNode *node, u32 timeMs)=0
Animates a scene node.
char c8
8 bit character variable.
Definition: irrTypes.h:35
core::list< ISceneNode * > Children
List of all children of this node.
Definition: ISceneNode.h:842
virtual void setTriangleSelector(ITriangleSelector *selector)
Sets the triangle selector of the scene node.
Definition: ISceneNode.h:648
Scene node interface.
Definition: ISceneNode.h:40
void cloneMembers(ISceneNode *toCopyFrom, ISceneManager *newManager)
A clone function for the ISceneNode members.
Definition: ISceneNode.h:773
virtual const core::matrix4 & getAbsoluteTransformation() const
Get the absolute transformation of the node. Is recalculated every OnAnimate()-call.
Definition: ISceneNode.h:210
virtual void serializeAttributes(io::IAttributes *out, io::SAttributeReadWriteOptions *options=0) const
Writes attributes of the scene node.
Definition: ISceneNode.h:700
struct holding data describing options
bool IsDebugObject
Is debug object?
Definition: ISceneNode.h:866
Animates a scene node. Can animate position, rotation, material, and so on.
virtual void setScale(const core::vector3df &scale)
Sets the relative scale of the scene node.
Definition: ISceneNode.h:482
virtual void addBool(const c8 *attributeName, bool value)=0
Adds an attribute as bool.
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
void setFlag(E_MATERIAL_FLAG flag, bool value)
Sets the Material flag to the given value.
Definition: SMaterial.h:591
const u32 MATERIAL_MAX_TEXTURES
Maximum number of texture an SMaterial can have.
Definition: SMaterial.h:265
void setAutomaticCulling(u32 state)
Set a culling style or disable culling completely.
Definition: ISceneNode.h:548
virtual void addVector3d(const c8 *attributeName, const core::vector3df &value)=0
Adds an attribute as 3d vector.
virtual ISceneManager * getSceneManager(void) const
Retrieve the scene manager for this node.
Definition: ISceneNode.h:764
Very simple string class with some useful features.
Definition: irrString.h:37
Doubly linked list template.
Definition: irrList.h:20
virtual void render()=0
Renders the node.
virtual void setRotation(const core::vector3df &rotation)
Sets the rotation of the node relative to its parent.
Definition: ISceneNode.h:502
const core::list< ISceneNodeAnimator * > & getAnimators() const
Get a list of all scene node animators.
Definition: ISceneNode.h:374
virtual const core::vector3df & getPosition() const
Gets the position of the node relative to its parent.
Definition: ISceneNode.h:512
virtual s32 getAttributeAsInt(const c8 *attributeName, irr::s32 defaultNotFound=0) const =0
void setMaterialType(video::E_MATERIAL_TYPE newType)
Sets the material type of all materials in this scene node to a new material type.
Definition: ISceneNode.h:462
bool IsVisible
Is the node visible?
Definition: ISceneNode.h:863
virtual void setVisible(bool isVisible)
Sets if the node should be visible or not.
Definition: ISceneNode.h:267
core::list< ISceneNodeAnimator * > Animators
List of all animator nodes.
Definition: ISceneNode.h:845
CMatrix4< T > & setScale(const vector3d< T > &scale)
Set Scale.
Definition: matrix4.h:817
vector3d< T > getTranslation() const
Gets the current translation.
Definition: matrix4.h:786
s32 ID
ID of the node.
Definition: ISceneNode.h:854
virtual void remove()
Removes this scene node from the scene.
Definition: ISceneNode.h:353
signed int s32
32 bit signed variable.
Definition: irrTypes.h:70
virtual ISceneNodeAnimator * createClone(ISceneNode *node, ISceneManager *newManager=0)=0
Creates a clone of this animator.
void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue)
Sets all material flags at once to a new value.
Definition: ISceneNode.h:439
virtual void OnAnimate(u32 timeMs)
OnAnimate() is called just before rendering the whole scene.
Definition: ISceneNode.h:108
CMatrix4< T > & setRotationDegrees(const vector3d< T > &rotation)
Make a rotation matrix from Euler angles. The 4th row and column are unmodified.
Definition: matrix4.h:855
const T * c_str() const
Returns character string.
Definition: irrString.h:526
virtual void addChild(ISceneNode *child)
Adds a child to this scene node.
Definition: ISceneNode.h:295
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:62
virtual const core::aabbox3d< f32 > & getBoundingBox() const =0
Get the axis aligned, not transformed bounding box of this node.
virtual void removeAll()
Removes all children of this scene node.
Definition: ISceneNode.h:337
ISceneManager * SceneManager
Pointer to the scene manager.
Definition: ISceneNode.h:848
void transformVect(vector3df &vect) const
Transforms the vector by this matrix.
Definition: matrix4.h:1192
virtual void setDebugDataVisible(u32 state)
Sets if debug data like bounding boxes should be drawn.
Definition: ISceneNode.h:566
void setIsDebugObject(bool debugObject)
Sets if this scene node is a debug object.
Definition: ISceneNode.h:583
u32 DebugDataVisible
Flag if debug data should be drawn, such as Bounding Boxes.
Definition: ISceneNode.h:860
virtual ITriangleSelector * getTriangleSelector() const
Returns the triangle selector attached to this scene node.
Definition: ISceneNode.h:633
virtual bool isTrulyVisible() const
Check whether the node is truly visible, taking into accounts its parents' visibility.
Definition: ISceneNode.h:251
scene::ISceneNode * getParent() const
Returns the parent of this scene node.
Definition: ISceneNode.h:679
virtual void addAnimator(ISceneNodeAnimator *animator)
Adds an animator which should animate this node.
Definition: ISceneNode.h:362
virtual void addString(const c8 *attributeName, const c8 *value)=0
Adds an attribute as string.
Unknown scene node.
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
IRRLICHT_API SMaterial IdentityMaterial
global const identity Material
virtual void updateAbsolutePosition()
Updates the absolute position based on the relative and the parents position.
Definition: ISceneNode.h:665
virtual void deserializeAttributes(io::IAttributes *in, io::SAttributeReadWriteOptions *options=0)
Reads attributes of the scene node.
Definition: ISceneNode.h:725
virtual void OnRegisterSceneNode()
This method is called just before the rendering process of the whole scene.
Definition: ISceneNode.h:91
core::vector3df RelativeTranslation
Relative translation of the scene node.
Definition: ISceneNode.h:830
virtual const core::vector3df & getScale() const
Gets the scale of the scene node relative to its parent.
Definition: ISceneNode.h:474
ISceneNode * Parent
Pointer to the parent.
Definition: ISceneNode.h:839
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Definition: matrix4.h:45
void getEdges(vector3d< T > *edges) const
Stores all 8 edges of the box into an array.
Definition: aabbox3d.h:150
void setMaterialTexture(u32 textureLayer, video::ITexture *texture)
Sets the texture of the specified layer in all materials of this scene node to the new texture.
Definition: ISceneNode.h:450
The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff.
virtual core::vector3df getAttributeAsVector3d(const c8 *attributeName, const core::vector3df &defaultNotFound=core::vector3df(0, 0, 0)) const =0
virtual void setID(s32 id)
Sets the id of the scene node.
Definition: ISceneNode.h:285
void grab() const
Grabs the object. Increments the reference counter by one.
Self reallocating template array (like stl vector) with additional features.
Definition: irrArray.h:22
CMatrix4< T > & setTranslation(const vector3d< T > &translation)
Set the translation of the current matrix. Will erase any previous values.
Definition: matrix4.h:793
virtual void setParent(ISceneNode *newParent)
Changes the parent of the scene node.
Definition: ISceneNode.h:609
E_MATERIAL_FLAG
Material flags.
virtual const core::vector3df & getRotation() const
Gets the rotation of the node relative to its parent.
Definition: ISceneNode.h:493
core::vector3df RelativeRotation
Relative rotation of the scene node.
Definition: ISceneNode.h:833
bool isDebugObject() const
Returns if this scene node is a debug object.
Definition: ISceneNode.h:593
core::vector3df RelativeScale
Relative scale of the scene node.
Definition: ISceneNode.h:836
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:153
virtual video::SMaterial & getMaterial(u32 num)
Returns the material based on the zero based index i.
Definition: ISceneNode.h:420
virtual core::matrix4 getRelativeTransformation() const
Returns the relative transformation of the scene node.
Definition: ISceneNode.h:221
virtual ISceneNode * clone(ISceneNode *newParent=0, ISceneManager *newManager=0)
Creates a clone of this scene node and its children.
Definition: ISceneNode.h:757
virtual void setPosition(const core::vector3df &newpos)
Sets the position of the node relative to its parent.
Definition: ISceneNode.h:521
virtual ~ISceneNode()
Destructor.
Definition: ISceneNode.h:62
core::list< ISceneNodeAnimator * > ISceneNodeAnimatorList
Typedef for list of scene node animators.
Definition: ISceneNode.h:30
virtual void setName(const core::stringc &name)
Sets the name of the node.
Definition: ISceneNode.h:162
virtual bool removeChild(ISceneNode *child)
Removes a child from this scene node.
Definition: ISceneNode.h:317
virtual void removeAnimator(ISceneNodeAnimator *animator)
Removes an animator from this scene node.
Definition: ISceneNode.h:384
No Debug Data ( Default )
core::list< ISceneNode * > ISceneNodeList
Typedef for list of scene nodes.
Definition: ISceneNode.h:25
virtual bool existsAttribute(const c8 *attributeName) const =0
Returns if an attribute with a name exists.
u32 AutomaticCullingState
Automatic culling state.
Definition: ISceneNode.h:857
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:286
const core::list< ISceneNode * > & getChildren() const
Returns a const reference to the list of all children.
Definition: ISceneNode.h:601
virtual const c8 * getAttributeAsEnumeration(const c8 *attributeName, const c8 *defaultNotFound=0) const =0
const c8 *const AutomaticCullingNames[]
Names for culling type.
Definition: ECullingTypes.h:26
ITriangleSelector * TriangleSelector
Pointer to the triangle selector.
Definition: ISceneNode.h:851
core::matrix4 AbsoluteTransformation
Absolute transformation of the node.
Definition: ISceneNode.h:827
virtual void removeAnimators()
Removes all animators from this scene node.
Definition: ISceneNode.h:402
void setSceneManager(ISceneManager *newManager)
Definition: ISceneNode.h:814
u32 isDebugDataVisible() const
Returns if debug data like bounding boxes are drawn.
Definition: ISceneNode.h:574
virtual const core::aabbox3d< f32 > getTransformedBoundingBox() const
Get the axis aligned, transformed and animated absolute bounding box of this node.
Definition: ISceneNode.h:183
void transformBoxEx(core::aabbox3d< f32 > &box) const
Transforms a axis aligned bounding box.
Definition: matrix4.h:1282
virtual u32 getMaterialCount() const
Get amount of materials used by this scene node.
Definition: ISceneNode.h:428
List iterator.
Definition: irrList.h:38