5#ifndef __I_SCENE_NODE_H_INCLUDED__
6#define __I_SCENE_NODE_H_INCLUDED__
68 ISceneNodeAnimatorList::Iterator ait =
Animators.begin();
95 ISceneNodeList::Iterator it =
Children.begin();
97 (*it)->OnRegisterSceneNode();
114 ISceneNodeAnimatorList::Iterator ait =
Animators.begin();
130 ISceneNodeList::Iterator it =
Children.begin();
132 (*it)->OnAnimate(timeMs);
282 if (child && (child !=
this))
304 ISceneNodeList::Iterator it =
Children.begin();
325 ISceneNodeList::Iterator it =
Children.begin();
372 ISceneNodeAnimatorList::Iterator it =
Animators.begin();
375 if ((*it) == animator)
390 ISceneNodeAnimatorList::Iterator it =
Animators.begin();
778 ISceneNodeList::Iterator it = toCopyFrom->
Children.begin();
779 for (; it != toCopyFrom->
Children.end(); ++it)
780 (*it)->clone(
this, newManager);
784 ISceneNodeAnimatorList::Iterator ait = toCopyFrom->
Animators.begin();
785 for (; ait != toCopyFrom->
Animators.end(); ++ait)
802 ISceneNodeList::Iterator it =
Children.begin();
804 (*it)->setSceneManager(newManager);
bool drop() const
Drops the object. Decrements the reference counter by one.
void grab() const
Grabs the object. Increments the reference counter by one.
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
void transformBoxEx(core::aabbox3d< f32 > &box) const
Transforms a axis aligned bounding box.
CMatrix4< T > & setScale(const vector3d< T > &scale)
Set Scale.
vector3d< T > getTranslation() const
Gets the current translation.
CMatrix4< T > & setRotationDegrees(const vector3d< T > &rotation)
Make a rotation matrix from Euler angles. The 4th row and column are unmodified.
CMatrix4< T > & setTranslation(const vector3d< T > &translation)
Set the translation of the current matrix. Will erase any previous values.
Axis aligned bounding box in 3d dimensional space.
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 possiblity to serialize them.
virtual void addString(const c8 *attributeName, const c8 *value)=0
Adds an attribute as string.
virtual bool getAttributeAsBool(const c8 *attributeName)=0
virtual void addBool(const c8 *attributeName, bool value)=0
Adds an attribute as bool.
virtual core::stringc getAttributeAsString(const c8 *attributeName)=0
virtual core::vector3df getAttributeAsVector3d(const c8 *attributeName)=0
virtual s32 getAttributeAsInt(const c8 *attributeName) const =0
virtual const c8 * getAttributeAsEnumeration(const c8 *attributeName)=0
virtual void addVector3d(const c8 *attributeName, core::vector3df value)=0
Adds an attribute as 3d vector.
virtual void addInt(const c8 *attributeName, s32 value)=0
Adds an attribute as integer.
The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff.
Animates a scene node. Can animate position, rotation, material, and so on.
virtual ISceneNodeAnimator * createClone(ISceneNode *node, ISceneManager *newManager=0)=0
Creates a clone of this animator.
virtual void animateNode(ISceneNode *node, u32 timeMs)=0
Animates a scene node.
void cloneMembers(ISceneNode *toCopyFrom, ISceneManager *newManager)
A clone function for the ISceneNode members.
ISceneManager * SceneManager
Pointer to the scene manager.
u32 getAutomaticCulling() const
Gets the automatic culling state.
u32 AutomaticCullingState
Automatic culling state.
virtual core::vector3df getAbsolutePosition() const
Gets the absolute position of the node in world coordinates.
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.
virtual void addAnimator(ISceneNodeAnimator *animator)
Adds an animator which should animate this node.
ISceneNode * Parent
Pointer to the parent.
virtual s32 getID() const
Get the id of the scene node.
const core::list< ISceneNode * > & getChildren() const
Returns a const reference to the list of all children.
core::list< ISceneNode * > Children
List of all children of this node.
virtual void setScale(const core::vector3df &scale)
Sets the relative scale of the scene node.
core::vector3df RelativeTranslation
Relative translation of the scene node.
virtual const core::matrix4 & getAbsoluteTransformation() const
Get the absolute transformation of the node. Is recalculated every OnAnimate()-call.
virtual void setName(const core::stringc &name)
Sets the name of the node.
virtual void setPosition(const core::vector3df &newpos)
Sets the position of the node relative to its parent.
u32 DebugDataVisible
Flag if debug data should be drawn, such as Bounding Boxes.
core::stringc Name
Name of the scene node.
virtual const core::vector3df & getScale() const
Gets the scale of the scene node relative to its parent.
void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue)
Sets all material flags at once to a new value.
virtual void removeAnimators()
Removes all animators from this scene node.
scene::ISceneNode * getParent() const
Returns the parent of this scene node.
virtual void setVisible(bool isVisible)
Sets if the node should be visible or not.
virtual void remove()
Removes this scene node from the scene.
void setMaterialType(video::E_MATERIAL_TYPE newType)
Sets the material type of all materials in this scene node to a new material type.
bool isDebugObject() const
Returns if this scene node is a debug object.
virtual ~ISceneNode()
Destructor.
virtual void serializeAttributes(io::IAttributes *out, io::SAttributeReadWriteOptions *options=0) const
Writes attributes of the scene node.
virtual const c8 * getName() const
Returns the name of the node.
virtual ESCENE_NODE_TYPE getType() const
Returns type of the scene node.
virtual void removeAll()
Removes all children of this scene node.
virtual bool isTrulyVisible() const
Check whether the node is truly visible, taking into accounts its parents' visibility.
void setSceneManager(ISceneManager *newManager)
virtual void setParent(ISceneNode *newParent)
Changes the parent of the scene node.
virtual const core::aabbox3d< f32 > getTransformedBoundingBox() const
Get the axis aligned, transformed and animated absolute bounding box of this node.
virtual void deserializeAttributes(io::IAttributes *in, io::SAttributeReadWriteOptions *options=0)
Reads attributes of the scene node.
void setAutomaticCulling(u32 state)
Enables or disables automatic culling based on the bounding box.
virtual ISceneManager * getSceneManager(void) const
Retrieve the scene manager for this node.
core::vector3df RelativeScale
Relative scale of the scene node.
void setIsDebugObject(bool debugObject)
Sets if this scene node is a debug object.
core::list< ISceneNodeAnimator * > Animators
List of all animator nodes.
virtual void setName(const c8 *name)
Sets the name of the node.
virtual bool removeChild(ISceneNode *child)
Removes a child from this scene node.
core::vector3df RelativeRotation
Relative rotation of the scene node.
virtual void setTriangleSelector(ITriangleSelector *selector)
Sets the triangle selector of the scene node.
virtual u32 getMaterialCount() const
Get amount of materials used by this scene node.
bool IsDebugObject
Is debug object?
virtual const core::aabbox3d< f32 > & getBoundingBox() const =0
Get the axis aligned, not transformed bounding box of this node.
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.
virtual bool isVisible() const
Returns whether the node should be visible (if all of its parents are visible).
virtual video::SMaterial & getMaterial(u32 num)
Returns the material based on the zero based index i.
bool IsVisible
Is the node visible?
virtual void removeAnimator(ISceneNodeAnimator *animator)
Removes an animator from this scene node.
core::matrix4 AbsoluteTransformation
Absolute transformation of the node.
virtual core::matrix4 getRelativeTransformation() const
Returns the relative transformation of the scene node.
virtual void OnRegisterSceneNode()
This method is called just before the rendering process of the whole scene.
virtual const core::vector3df & getPosition() const
Gets the position of the node relative to its parent.
virtual void addChild(ISceneNode *child)
Adds a child to this scene node.
u32 isDebugDataVisible() const
Returns if debug data like bounding boxes are drawn.
const core::list< ISceneNodeAnimator * > & getAnimators() const
Get a list of all scene node animators.
ITriangleSelector * TriangleSelector
Pointer to the triangle selector.
virtual ITriangleSelector * getTriangleSelector() const
Returns the triangle selector attached to this scene node.
virtual void setDebugDataVisible(u32 state)
Sets if debug data like bounding boxes should be drawn.
virtual ISceneNode * clone(ISceneNode *newParent=0, ISceneManager *newManager=0)
Creates a clone of this scene node and its children.
virtual void setRotation(const core::vector3df &rotation)
Sets the rotation of the node relative to its parent.
virtual const core::vector3df & getRotation() const
Gets the rotation of the node relative to its parent.
virtual void setID(s32 id)
Sets the id of the scene node.
virtual void updateAbsolutePosition()
Updates the absolute position based on the relative and the parents position.
virtual void OnAnimate(u32 timeMs)
OnAnimate() is called just before rendering the whole scene.
virtual void render()=0
Renders the node.
Interface to return triangles with specific properties.
Interface of a Video Driver dependent Texture.
Struct for holding parameters for a material renderer.
void setTexture(u32 i, ITexture *tex)
Sets the i-th texture.
void setFlag(E_MATERIAL_FLAG flag, bool value)
Sets the Material flag to the given value.
E_MATERIAL_TYPE MaterialType
Type of the material. Specifies how everything is blended together.
#define _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX
Defines a small statement to work around a microsoft compiler bug.
core::list< ISceneNodeAnimator * > ISceneNodeAnimatorList
Typedef for list of scene node animators.
@ EDS_OFF
No Debug Data ( Default )
core::list< ISceneNode * > ISceneNodeList
Typedef for list of scene nodes.
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
@ ESNT_UNKNOWN
Unknown scene node.
const c8 *const AutomaticCullingNames[]
Names for culling type.
IRRLICHT_API SMaterial IdentityMaterial
global const identity Material
E_MATERIAL_FLAG
Material flags.
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
const u32 MATERIAL_MAX_TEXTURES
Maximum number of texture an SMaterial can have.
Everything in the Irrlicht Engine can be found in this namespace.
unsigned int u32
32 bit unsigned variable.
char c8
8 bit character variable.
signed int s32
32 bit signed variable.
struct holding data describing options