Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members

irr::scene::ISceneManager Class Reference

The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff. More...

#include <ISceneManager.h>

Inheritance diagram for irr::scene::ISceneManager:

irr::IReferenceCounted List of all members.

Public Member Functions

virtual IAnimatedMeshSceneNodeaddAnimatedMeshSceneNode (IAnimatedMesh *mesh, ISceneNode *parent=0, 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), bool alsoAddIfMeshPointerZero=false)=0
 Adds a scene node for rendering an animated mesh model.
virtual IAnimatedMeshaddArrowMesh (const c8 *name, video::SColor vtxColor0=0xFFFFFFFF, video::SColor vtxColor1=0xFFFFFFFF, u32 tesselationCylinder=4, u32 tesselationCone=8, f32 height=1.f, f32 cylinderHeight=0.6f, f32 width0=0.05f, f32 width1=0.3f)=0
 add a static arrow mesh to the meshpool
virtual IBillboardSceneNodeaddBillboardSceneNode (ISceneNode *parent=0, const core::dimension2d< f32 > &size=core::dimension2d< f32 >(10.0f, 10.0f), const core::vector3df &position=core::vector3df(0, 0, 0), s32 id=-1, video::SColor shade_top=0xFFFFFFFF, video::SColor shade_down=0xFFFFFFFF)=0
 Adds a billboard scene node to the scene graph.
virtual ITextSceneNodeaddBillboardTextSceneNode (gui::IGUIFont *font, const wchar_t *text, ISceneNode *parent=0, const core::dimension2d< f32 > &size=core::dimension2d< f32 >(10.0f, 10.0f), const core::vector3df &position=core::vector3df(0, 0, 0), s32 id=-1, video::SColor shade_top=0xFFFFFFFF, video::SColor shade_down=0xFFFFFFFF)=0
 Adds a text scene node, which uses billboards.
virtual ICameraSceneNodeaddCameraSceneNode (ISceneNode *parent=0, const core::vector3df &position=core::vector3df(0, 0, 0), const core::vector3df &lookat=core::vector3df(0, 0, 100), s32 id=-1)=0
 Adds a camera scene node to the scene graph and sets it as active camera.
virtual ICameraSceneNodeaddCameraSceneNodeFPS (ISceneNode *parent=0, f32 rotateSpeed=100.0f, f32 moveSpeed=500.0f, s32 id=-1, SKeyMap *keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false, f32 jumpSpeed=0.f)=0
 Adds a camera scene node which is able to be controlled with the mouse and keys like in most first person shooters (FPS).
virtual ICameraSceneNodeaddCameraSceneNodeMaya (ISceneNode *parent=0, f32 rotateSpeed=-1500.0f, f32 zoomSpeed=200.0f, f32 translationSpeed=1500.0f, s32 id=-1)=0
 Adds a maya style user controlled camera scene node to the scene graph.
virtual ISceneNodeaddCubeSceneNode (f32 size=10.0f, ISceneNode *parent=0, 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))=0
 Adds a test scene node for test purposes to the scene.
virtual IDummyTransformationSceneNodeaddDummyTransformationSceneNode (ISceneNode *parent=0, s32 id=-1)=0
 Adds a dummy transformation scene node to the scene graph.
virtual ISceneNodeaddEmptySceneNode (ISceneNode *parent=0, s32 id=-1)=0
 Adds an empty scene node to the scene graph.
virtual void addExternalMeshLoader (IMeshLoader *externalLoader)=0
 Adds an external mesh loader for extending the engine with new file formats.
virtual IAnimatedMeshaddHillPlaneMesh (const c8 *name, const core::dimension2d< f32 > &tileSize, const core::dimension2d< u32 > &tileCount, video::SMaterial *material=0, f32 hillHeight=0.0f, const core::dimension2d< f32 > &countHills=core::dimension2d< f32 >(0.0f, 0.0f), const core::dimension2d< f32 > &textureRepeatCount=core::dimension2d< f32 >(1.0f, 1.0f))=0
 Adds a Hill Plane mesh to the mesh pool.
virtual ILightSceneNodeaddLightSceneNode (ISceneNode *parent=0, const core::vector3df &position=core::vector3df(0, 0, 0), video::SColorf color=video::SColorf(1.0f, 1.0f, 1.0f), f32 radius=100.0f, s32 id=-1)=0
 Adds a dynamic light scene node to the scene graph.
virtual IMeshSceneNodeaddMeshSceneNode (IMesh *mesh, ISceneNode *parent=0, 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), bool alsoAddIfMeshPointerZero=false)=0
 Adds a scene node for rendering a static mesh.
virtual ISceneNodeaddOctTreeSceneNode (IMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)=0
 Adds a scene node for rendering using a octtree to the scene graph.
virtual ISceneNodeaddOctTreeSceneNode (IAnimatedMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)=0
 Adds a scene node for rendering using a octtree to the scene graph.
virtual IParticleSystemSceneNodeaddParticleSystemSceneNode (bool withDefaultEmitter=true, ISceneNode *parent=0, 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))=0
 Adds a particle system scene node to the scene graph.
virtual ISceneNodeaddQuake3SceneNode (IMeshBuffer *meshBuffer, const quake3::SShader *shader, ISceneNode *parent=0, s32 id=-1)=0
 Adds a quake3 scene node to the scene graph.
virtual ISceneNodeaddSceneNode (const char *sceneNodeTypeName, ISceneNode *parent)=0
 Adds a scene node to the scene by name.
virtual ISceneNodeaddSkyBoxSceneNode (video::ITexture *top, video::ITexture *bottom, video::ITexture *left, video::ITexture *right, video::ITexture *front, video::ITexture *back, ISceneNode *parent=0, s32 id=-1)=0
 Adds a skybox scene node to the scene graph.
virtual ISceneNodeaddSkyDomeSceneNode (video::ITexture *texture, u32 horiRes, u32 vertRes, f64 texturePercentage, f64 spherePercentage, ISceneNode *parent=0, s32 id=-1)=0
 Adds a skydome scene node to the scene graph.
virtual IAnimatedMeshaddSphereMesh (const c8 *name, f32 radius=5.f, u32 polyCountX=16, u32 polyCountY=16)=0
 add a static sphere mesh to the meshpool
virtual ISceneNodeaddSphereSceneNode (f32 radius=5.0f, s32 polyCount=16, ISceneNode *parent=0, 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))=0
 Adds a sphere scene node for test purposes to the scene.
virtual IAnimatedMeshaddTerrainMesh (const c8 *meshname, video::IImage *texture, video::IImage *heightmap, const core::dimension2d< f32 > &stretchSize=core::dimension2d< f32 >(10.0f, 10.0f), f32 maxHeight=200.0f, const core::dimension2d< s32 > &defaultVertexBlockSize=core::dimension2d< s32 >(64, 64))=0
 Adds a static terrain mesh to the mesh pool.
virtual ITerrainSceneNodeaddTerrainSceneNode (io::IReadFile *heightMapFile, ISceneNode *parent=0, s32 id=-1, const core::vector3df &position=core::vector3df(0.0f, 0.0f, 0.0f), const core::vector3df &rotation=core::vector3df(0.0f, 0.0f, 0.0f), const core::vector3df &scale=core::vector3df(1.0f, 1.0f, 1.0f), video::SColor vertexColor=video::SColor(255, 255, 255, 255), s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0, bool addAlsoIfHeightmapEmpty=false)=0
 Adds a terrain scene node to the scene graph.
virtual ITerrainSceneNodeaddTerrainSceneNode (const c8 *heightMapFileName, ISceneNode *parent=0, s32 id=-1, const core::vector3df &position=core::vector3df(0.0f, 0.0f, 0.0f), const core::vector3df &rotation=core::vector3df(0.0f, 0.0f, 0.0f), const core::vector3df &scale=core::vector3df(1.0f, 1.0f, 1.0f), video::SColor vertexColor=video::SColor(255, 255, 255, 255), s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0, bool addAlsoIfHeightmapEmpty=false)=0
 Adds a terrain scene node to the scene graph.
virtual ITextSceneNodeaddTextSceneNode (gui::IGUIFont *font, const wchar_t *text, video::SColor color=video::SColor(100, 255, 255, 255), ISceneNode *parent=0, const core::vector3df &position=core::vector3df(0, 0, 0), s32 id=-1)=0
 Adds a text scene node, which is able to display 2d text at a position in three dimensional space.
virtual void addToDeletionQueue (ISceneNode *node)=0
 Adds a scene node to the deletion queue.
virtual ISceneNodeaddWaterSurfaceSceneNode (IMesh *mesh, f32 waveHeight=2.0f, f32 waveSpeed=300.0f, f32 waveLength=10.0f, ISceneNode *parent=0, 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))=0
 Adds a scene node for rendering a animated water surface mesh.
virtual void clear ()=0
 Clears the whole scene.
virtual ISceneNodeAnimatorCollisionResponsecreateCollisionResponseAnimator (ITriangleSelector *world, ISceneNode *sceneNode, const core::vector3df &ellipsoidRadius=core::vector3df(30, 60, 30), const core::vector3df &gravityPerSecond=core::vector3df(0,-100.0f, 0), const core::vector3df &ellipsoidTranslation=core::vector3df(0, 0, 0), f32 slidingValue=0.0005f)=0
 Creates a special scene node animator for doing automatic collision detection and response.
virtual ISceneNodeAnimatorcreateDeleteAnimator (u32 timeMs)=0
 Creates a scene node animator, which deletes the scene node after some time automatically.
virtual ISceneNodeAnimatorcreateFlyCircleAnimator (const core::vector3df &center, f32 radius, f32 speed=0.001f, const core::vector3df &direction=core::vector3df(0.f, 1.f, 0.f))=0
 Creates a fly circle animator, which lets the attached scene node fly around a center.
virtual ISceneNodeAnimatorcreateFlyStraightAnimator (const core::vector3df &startPoint, const core::vector3df &endPoint, u32 timeForWay, bool loop=false)=0
 Creates a fly straight animator, which lets the attached scene node fly or move along a line between two points.
virtual ISceneNodeAnimatorcreateFollowSplineAnimator (s32 startTime, const core::array< core::vector3df > &points, f32 speed=1.0f, f32 tightness=0.5f)=0
 Creates a follow spline animator.
virtual IMeshWritercreateMeshWriter (EMESH_WRITER_TYPE type)=0
 Returns a mesh writer implementation if available.
virtual IMetaTriangleSelectorcreateMetaTriangleSelector ()=0
 Creates a meta triangle selector.
virtual ISceneManagercreateNewSceneManager (bool cloneContent=false)=0
 Creates a new scene manager.
virtual ITriangleSelectorcreateOctTreeTriangleSelector (IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)=0
 Creates a Triangle Selector, optimized by an octtree.
virtual ISceneNodeAnimatorcreateRotationAnimator (const core::vector3df &rotationPerSecond)=0
 Creates a rotation animator, which rotates the attached scene node around itself.
virtual ITriangleSelectorcreateTerrainTriangleSelector (ITerrainSceneNode *node, s32 LOD=0)=0
 Creates a triangle selector which can select triangles from a terrain scene node.
virtual ISceneNodeAnimatorcreateTextureAnimator (const core::array< video::ITexture * > &textures, s32 timePerFrame, bool loop=true)=0
 Creates a texture animator, which switches the textures of the target scene node based on a list of textures.
virtual ITriangleSelectorcreateTriangleSelector (IMesh *mesh, ISceneNode *node)=0
 Creates a simple ITriangleSelector, based on a mesh.
virtual ITriangleSelectorcreateTriangleSelectorFromBoundingBox (ISceneNode *node)=0
 Creates a simple dynamic ITriangleSelector, based on a axis aligned bounding box.
virtual void drawAll ()=0
 Draws all the scene nodes.
virtual ICameraSceneNodegetActiveCamera ()=0
 Returns the current active camera.
virtual const video::SColorfgetAmbientLight () const =0
 Returns ambient color of the scene.
virtual ISceneNodeAnimatorFactorygetDefaultSceneNodeAnimatorFactory ()=0
 Returns the default scene node animator factory which can create all built-in scene node animators.
virtual ISceneNodeFactorygetDefaultSceneNodeFactory ()=0
 Returns the default scene node factory which can create all built in scene nodes.
virtual gui::IGUIEnvironmentgetGUIEnvironment ()=0
 Returns the active GUIEnvironment.
virtual IAnimatedMeshgetMesh (const c8 *filename)=0
 Returns pointer to an animateable mesh. Loads the file if not loaded already.
virtual IMeshCachegetMeshCache ()=0
 Returns an interface to the mesh cache which is shared beween all existing scene managers.
virtual IMeshManipulatorgetMeshManipulator ()=0
 Returns a pointer to the mesh manipulator.
virtual io::IAttributesgetParameters ()=0
 Returns interface to the parameters set in this scene.
virtual u32 getRegisteredSceneNodeAnimatorFactoryCount () const =0
 Returns amount of registered scene node animator factories.
virtual u32 getRegisteredSceneNodeFactoryCount () const =0
 Returns amount of registered scene node factories.
virtual ISceneNodegetRootSceneNode ()=0
 Returns the root scene node.
virtual ISceneCollisionManagergetSceneCollisionManager ()=0
 Returns a pointer to the scene collision manager.
virtual ISceneNodeAnimatorFactorygetSceneNodeAnimatorFactory (u32 index)=0
 Returns a scene node animator factory by index.
virtual ISceneNodeFactorygetSceneNodeFactory (u32 index)=0
 Returns a scene node factory by index.
virtual ISceneNodegetSceneNodeFromId (s32 id, ISceneNode *start=0)=0
 Returns the first scene node with the specified id.
virtual ISceneNodegetSceneNodeFromName (const c8 *name, ISceneNode *start=0)=0
 Returns the first scene node with the specified name.
virtual ISceneNodegetSceneNodeFromType (scene::ESCENE_NODE_TYPE type, ISceneNode *start=0)=0
 Returns the first scene node with the specified type.
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass () const =0
 Returns current render pass.
virtual void getSceneNodesFromType (ESCENE_NODE_TYPE type, core::array< scene::ISceneNode * > &outNodes, ISceneNode *start=0)=0
 returns scene nodes by type.
virtual const c8getSceneNodeTypeName (ESCENE_NODE_TYPE type)=0
 Returns a typename from a scene node type or null if not found.
virtual video::SColor getShadowColor () const =0
 Returns the current color of shadows.
virtual video::IVideoDrivergetVideoDriver ()=0
 Returns the video driver.
virtual bool loadScene (io::IReadFile *file, ISceneUserDataSerializer *userDataSerializer=0)=0
 Loads a scene. Note that the current scene is not cleared before.
virtual bool loadScene (const c8 *filename, ISceneUserDataSerializer *userDataSerializer=0)=0
 Loads a scene. Note that the current scene is not cleared before.
virtual bool postEventFromUser (const SEvent &event)=0
 Posts an input event to the environment.
virtual u32 registerNodeForRendering (ISceneNode *node, E_SCENE_NODE_RENDER_PASS pass=ESNRP_AUTOMATIC)=0
 Registers a node for rendering it at a specific time.
virtual void registerSceneNodeAnimatorFactory (ISceneNodeAnimatorFactory *factoryToAdd)=0
 Adds a scene node animator factory to the scene manager.
virtual void registerSceneNodeFactory (ISceneNodeFactory *factoryToAdd)=0
 Adds a scene node factory to the scene manager.
virtual bool saveScene (io::IWriteFile *file, ISceneUserDataSerializer *userDataSerializer=0)=0
 Saves the current scene into a file.
virtual bool saveScene (const c8 *filename, ISceneUserDataSerializer *userDataSerializer=0)=0
 Saves the current scene into a file.
virtual void setActiveCamera (ICameraSceneNode *camera)=0
 Sets the currently active camera.
virtual void setAmbientLight (const video::SColorf &ambientColor)=0
 Sets ambient color of the scene.
virtual void setShadowColor (video::SColor color=video::SColor(150, 0, 0, 0))=0
 Sets the color of stencil buffers shadows drawn by the scene manager.
virtual ~ISceneManager ()
 destructor

Detailed Description

The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff.

All Scene nodes can be created only here. There is a always growing list of scene nodes for lots of purposes: Indoor rendering scene nodes like the Octree (addOctTreeSceneNode()) or the terrain renderer (addTerrainSceneNode()), different Camera scene nodes (addCameraSceneNode(), addCameraSceneNodeMaya()), scene nodes for Light (addLightSceneNode()), Billboards (addBillboardSceneNode()) and so on. A scene node is a node in the hierachical scene graph. Every scene node may have children, which are other scene nodes. Children move relative the their parents position. If the parent of a node is not visible, its children won't be visible, too. In this way, it is for example easily possible to attach a light to a moving car or to place a walking character on a moving platform on a moving ship. The SceneManager is also able to load 3d mesh files of different formats. Take a look at getMesh() to find out what formats are supported. And if these formats are not enough use addExternalMeshLoader() to add new formats to the engine.

Definition at line 148 of file ISceneManager.h.


Constructor & Destructor Documentation

virtual irr::scene::ISceneManager::~ISceneManager  )  [inline, virtual]
 

destructor

Definition at line 153 of file ISceneManager.h.


Member Function Documentation

virtual IAnimatedMeshSceneNode* irr::scene::ISceneManager::addAnimatedMeshSceneNode IAnimatedMesh mesh,
ISceneNode parent = 0,
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),
bool  alsoAddIfMeshPointerZero = false
[pure virtual]
 

Adds a scene node for rendering an animated mesh model.

Parameters:
mesh,: Pointer to the loaded animated mesh to be displayed.
parent,: Parent of the scene node. Can be NULL if no parent.
id,: Id of the node. This id can be used to identify the scene node.
position,: Position of the space relative to its parent where the scene node will be placed.
rotation,: Initital rotation of the scene node.
scale,: Initial scale of the scene node.
alsoAddIfMeshPointerZero,: Add the scene node even if a 0 pointer is passed.
Returns:
Returns pointer to the created scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual IAnimatedMesh* irr::scene::ISceneManager::addArrowMesh const c8 name,
video::SColor  vtxColor0 = 0xFFFFFFFF,
video::SColor  vtxColor1 = 0xFFFFFFFF,
u32  tesselationCylinder = 4,
u32  tesselationCone = 8,
f32  height = 1.f,
f32  cylinderHeight = 0.6f,
f32  width0 = 0.05f,
f32  width1 = 0.3f
[pure virtual]
 

add a static arrow mesh to the meshpool

virtual IBillboardSceneNode* irr::scene::ISceneManager::addBillboardSceneNode ISceneNode parent = 0,
const core::dimension2d< f32 > &  size = core::dimension2df32 >(10.0f, 10.0f),
const core::vector3df position = core::vector3df(0, 0, 0),
s32  id = -1,
video::SColor  shade_top = 0xFFFFFFFF,
video::SColor  shade_down = 0xFFFFFFFF
[pure virtual]
 

Adds a billboard scene node to the scene graph.

A billboard is like a 3d sprite: A 2d element, which always looks to the camera. It is usually used for things like explosions, fire, lensflares and things like that.

Parameters:
parent,: Parent scene node of the billboard. Can be null. If the parent moves, the billboard will move too.
position,: Position of the space relative to its parent where the billboard will be placed.
size,: Size of the billboard. This size is 2 dimensional because a billboard only has width and height.
id,: An id of the node. This id can be used to identify the node.
shade_top,: vertex color top
shade_down,: vertex color down
Returns:
Returns pointer to the billboard if successful, otherwise NULL. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ITextSceneNode* irr::scene::ISceneManager::addBillboardTextSceneNode gui::IGUIFont font,
const wchar_t *  text,
ISceneNode parent = 0,
const core::dimension2d< f32 > &  size = core::dimension2df32 >(10.0f, 10.0f),
const core::vector3df position = core::vector3df(0, 0, 0),
s32  id = -1,
video::SColor  shade_top = 0xFFFFFFFF,
video::SColor  shade_down = 0xFFFFFFFF
[pure virtual]
 

Adds a text scene node, which uses billboards.

virtual ICameraSceneNode* irr::scene::ISceneManager::addCameraSceneNode ISceneNode parent = 0,
const core::vector3df position = core::vector3df(0, 0, 0),
const core::vector3df lookat = core::vector3df(0, 0, 100),
s32  id = -1
[pure virtual]
 

Adds a camera scene node to the scene graph and sets it as active camera.

This camera does not react on user input like for example the one created with addCameraSceneNodeFPS(). If you want to move or animate it, use animators or the ISceneNode::setPosition(), ICameraSceneNode::setTarget() etc methods.

Parameters:
position,: Position of the space relative to its parent where the camera will be placed.
lookat,: Position where the camera will look at. Also known as target.
parent,: Parent scene node of the camera. Can be null. If the parent moves, the camera will move too.
id,: id of the camera. This id can be used to identify the camera.
Returns:
Returns pointer to interface to camera if successful, otherwise 0. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ICameraSceneNode* irr::scene::ISceneManager::addCameraSceneNodeFPS ISceneNode parent = 0,
f32  rotateSpeed = 100.0f,
f32  moveSpeed = 500.0f,
s32  id = -1,
SKeyMap keyMapArray = 0,
s32  keyMapSize = 0,
bool  noVerticalMovement = false,
f32  jumpSpeed = 0.f
[pure virtual]
 

Adds a camera scene node which is able to be controlled with the mouse and keys like in most first person shooters (FPS).

Look with the mouse, move with cursor keys. If you do not like the default key layout, you may want to specify your own. For example to make the camera be controlled by the cursor keys AND the keys W,A,S, and D, do something like this:

                 SKeyMap keyMap[8];
                 keyMap[0].Action = EKA_MOVE_FORWARD;
                 keyMap[0].KeyCode = KEY_UP;
                 keyMap[1].Action = EKA_MOVE_FORWARD;
                 keyMap[1].KeyCode = KEY_KEY_W;

                 keyMap[2].Action = EKA_MOVE_BACKWARD;
                 keyMap[2].KeyCode = KEY_DOWN;
                 keyMap[3].Action = EKA_MOVE_BACKWARD;
                 keyMap[3].KeyCode = KEY_KEY_S;

                 keyMap[4].Action = EKA_STRAFE_LEFT;
                 keyMap[4].KeyCode = KEY_LEFT;
                 keyMap[5].Action = EKA_STRAFE_LEFT;
                 keyMap[5].KeyCode = KEY_KEY_A;

                 keyMap[6].Action = EKA_STRAFE_RIGHT;
                 keyMap[6].KeyCode = KEY_RIGHT;
                 keyMap[7].Action = EKA_STRAFE_RIGHT;
                 keyMap[7].KeyCode = KEY_KEY_D;

                 camera = sceneManager->addCameraSceneNodeFPS(0, 100, 500, -1, keyMap, 8);
Parameters:
parent,: Parent scene node of the camera. Can be null.
rotateSpeed,: Speed with which the camera is rotated. This can be done only with the mouse.
moveSpeed,: Speed with which the camera is moved. Movement is done with the cursor keys.
id,: id of the camera. This id can be used to identify the camera.
keyMapArray,: Optional pointer to an array of a keymap, specifying what keys should be used to move the camera. If this is null, the default keymap is used. You can define actions more then one time in the array, to bind multiple keys to the same action.
keyMapSize,: Amount of items in the keymap array.
noVerticalMovement,: Setting this to true makes the camera only move within a horizontal plane, and disables vertical movement as known from most ego shooters. Default is 'false', with which it is possible to fly around in space, if no gravity is there.
jumpSpeed,: Speed with which the camera is moved when jumping.
Returns:
Returns a pointer to the interface of the camera if successful, otherwise 0. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ICameraSceneNode* irr::scene::ISceneManager::addCameraSceneNodeMaya ISceneNode parent = 0,
f32  rotateSpeed = -1500.0f,
f32  zoomSpeed = 200.0f,
f32  translationSpeed = 1500.0f,
s32  id = -1
[pure virtual]
 

Adds a maya style user controlled camera scene node to the scene graph.

The maya camera is able to be controlled with the mouse similar like in the 3D Software Maya by Alias Wavefront.

Parameters:
parent,: Parent scene node of the camera. Can be null.
rotateSpeed,: Rotation speed of the camera.
zoomSpeed,: Zoom speed of the camera.
translationSpeed,: TranslationSpeed of the camera.
id,: id of the camera. This id can be used to identify the camera.
Returns:
Returns a pointer to the interface of the camera if successful, otherwise 0. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addCubeSceneNode f32  size = 10.0f,
ISceneNode parent = 0,
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)
[pure virtual]
 

Adds a test scene node for test purposes to the scene.

It is a simple cube of (1,1,1) size.

Parameters:
size,: Size of the cube.
parent,: Parent of the scene node. Can be NULL if no parent.
id,: Id of the node. This id can be used to identify the scene node.
position,: Position of the space relative to its parent where the scene node will be placed.
rotation,: Initital rotation of the scene node.
scale,: Initial scale of the scene node.
Returns:
Returns pointer to the created test scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual IDummyTransformationSceneNode* irr::scene::ISceneManager::addDummyTransformationSceneNode ISceneNode parent = 0,
s32  id = -1
[pure virtual]
 

Adds a dummy transformation scene node to the scene graph.

This scene node does not render itself, and does not respond to set/getPosition, set/getRotation and set/getScale. Its just a simple scene node that takes a matrix as relative transformation, making it possible to insert any transformation anywhere into the scene graph.

Returns:
Returns pointer to the created scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addEmptySceneNode ISceneNode parent = 0,
s32  id = -1
[pure virtual]
 

Adds an empty scene node to the scene graph.

Can be used for doing advanced transformations or structuring the scene graph.

Returns:
Returns pointer to the created scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual void irr::scene::ISceneManager::addExternalMeshLoader IMeshLoader externalLoader  )  [pure virtual]
 

Adds an external mesh loader for extending the engine with new file formats.

If you want the engine to be extended with file formats it currently is not able to load (e.g. .cob), just implement the IMeshLoader interface in your loading class and add it with this method. Using this method it is also possible to override built-in mesh loaders with newer or updated versions without the need of recompiling the engine.

Parameters:
externalLoader,: Implementation of a new mesh loader.

virtual IAnimatedMesh* irr::scene::ISceneManager::addHillPlaneMesh const c8 name,
const core::dimension2d< f32 > &  tileSize,
const core::dimension2d< u32 > &  tileCount,
video::SMaterial material = 0,
f32  hillHeight = 0.0f,
const core::dimension2d< f32 > &  countHills = core::dimension2df32 >(0.0f, 0.0f),
const core::dimension2d< f32 > &  textureRepeatCount = core::dimension2df32 >(1.0f, 1.0f)
[pure virtual]
 

Adds a Hill Plane mesh to the mesh pool.

The mesh is generated on the fly and looks like a plane with some hills on it. It is uses mostly for quick tests of the engine only. You can specify how many hills there should be on the plane and how high they should be. Also you must specify a name for the mesh, because the mesh is added to the mesh pool, and can be retrieved again using ISceneManager::getMesh() with the name as parameter.

Parameters:
name,: The name of this mesh which must be specified in order to be able to retrieve the mesh later with ISceneManager::getMesh().
tileSize,: Size of a tile of the mesh. (10.0f, 10.0f) would be a good value to start, for example.
tileCount,: Specifies how much tiles there will be. If you specifiy for example that a tile has the size (10.0f, 10.0f) and the tileCount is (10,10), than you get a field of 100 tiles which has the dimension 100.0fx100.0f.
material,: Material of the hill mesh.
hillHeight,: Height of the hills. If you specify a negative value you will get holes instead of hills. If the height is 0, no hills will be created.
countHills,: Amount of hills on the plane. There will be countHills.X hills along the X axis and countHills.Y along the Y axis. So in total there will be countHills.X * countHills.Y hills.
textureRepeatCount,: Defines how often the texture will be repeated in x and y direction.
Returns:
Returns null if the creation failed. The reason could be that you specified some invalid parameters or that a mesh with that name already exists. If successful, a pointer to the mesh is returned. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ILightSceneNode* irr::scene::ISceneManager::addLightSceneNode ISceneNode parent = 0,
const core::vector3df position = core::vector3df(0, 0, 0),
video::SColorf  color = video::SColorf(1.0f, 1.0f, 1.0f),
f32  radius = 100.0f,
s32  id = -1
[pure virtual]
 

Adds a dynamic light scene node to the scene graph.

The light will cast dynamic light on all other scene nodes in the scene, which have the material flag video::MTF_LIGHTING turned on. (This is the default setting in most scene nodes).

Parameters:
parent,: Parent scene node of the light. Can be null. If the parent moves, the light will move too.
position,: Position of the space relative to its parent where the light will be placed.
color,: Diffuse color of the light. Ambient or Specular colors can be set manually with the ILightSceneNode::getLightData() method.
radius,: Radius of the light.
id,: id of the node. This id can be used to identify the node.
Returns:
Returns pointer to the interface of the light if successful, otherwise NULL. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual IMeshSceneNode* irr::scene::ISceneManager::addMeshSceneNode IMesh mesh,
ISceneNode parent = 0,
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),
bool  alsoAddIfMeshPointerZero = false
[pure virtual]
 

Adds a scene node for rendering a static mesh.

Parameters:
mesh,: Pointer to the loaded static mesh to be displayed.
parent,: Parent of the scene node. Can be NULL if no parent.
id,: Id of the node. This id can be used to identify the scene node.
position,: Position of the space relative to its parent where the scene node will be placed.
rotation,: Initital rotation of the scene node.
scale,: Initial scale of the scene node.
alsoAddIfMeshPointerZero,: Add the scene node even if a 0 pointer is passed.
Returns:
Returns pointer to the created scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addOctTreeSceneNode IMesh mesh,
ISceneNode parent = 0,
s32  id = -1,
s32  minimalPolysPerNode = 256,
bool  alsoAddIfMeshPointerZero = false
[pure virtual]
 

Adds a scene node for rendering using a octtree to the scene graph.

This a good method for rendering scenes with lots of geometry. The Octree is built on the fly from the mesh, much faster then a bsp tree.

Parameters:
mesh,: The mesh containing all geometry from which the octtree will be build.
parent,: Parent node of the octtree node.
id,: id of the node. This id can be used to identify the node.
minimalPolysPerNode,: Specifies the minimal polygons contained a octree node. If a node gets less polys than this value it will not be split into smaller nodes.
alsoAddIfMeshPointerZero,: Add the scene node even if a 0 pointer is passed.
Returns:
Returns the pointer to the octtree if successful, otherwise 0. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addOctTreeSceneNode IAnimatedMesh mesh,
ISceneNode parent = 0,
s32  id = -1,
s32  minimalPolysPerNode = 256,
bool  alsoAddIfMeshPointerZero = false
[pure virtual]
 

Adds a scene node for rendering using a octtree to the scene graph.

This a good method for rendering scenes with lots of geometry. The Octree is built on the fly from the mesh.

Parameters:
mesh,: The mesh containing all geometry from which the octtree will be build. If this animated mesh has more than one frames in it, the first frame is taken.
parent,: Parent node of the octtree node.
id,: id of the node. This id can be used to identify the node.
minimalPolysPerNode,: Specifies the minimal polygons contained a octree node. If a node gets less polys than this value it will not be split into smaller nodes.
alsoAddIfMeshPointerZero,: Add the scene node even if a 0 pointer is passed.
Returns:
Returns the pointer to the OctTree if successful, otherwise 0. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual IParticleSystemSceneNode* irr::scene::ISceneManager::addParticleSystemSceneNode bool  withDefaultEmitter = true,
ISceneNode parent = 0,
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)
[pure virtual]
 

Adds a particle system scene node to the scene graph.

Parameters:
withDefaultEmitter,: Creates a default working point emitter which emitts some particles. Set this to true to see a particle system in action. If set to false, you'll have to set the emitter you want by calling IParticleSystemSceneNode::setEmitter().
parent,: Parent of the scene node. Can be NULL if no parent.
id,: Id of the node. This id can be used to identify the scene node.
position,: Position of the space relative to its parent where the scene node will be placed.
rotation,: Initital rotation of the scene node.
scale,: Initial scale of the scene node.
Returns:
Returns pointer to the created scene node. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addQuake3SceneNode IMeshBuffer meshBuffer,
const quake3::SShader shader,
ISceneNode parent = 0,
s32  id = -1
[pure virtual]
 

Adds a quake3 scene node to the scene graph.

A Quake3 Scene renders multiple meshes for a specific HighLanguage Shader (Quake3 Style )

Returns:
Returns a pointer to the quake3 scene node if successful, otherwise NULL. This pointer should not be dropped. See IReferenceCounted::drop() for more information.

virtual ISceneNode* irr::scene::ISceneManager::addSceneNode const char *  sceneNodeTypeName,
ISceneNode parent
[pure virtual]
 

Adds a scene node to the scene by name.

virtual ISceneNode* irr::scene::ISceneManager::addSkyBoxSceneNode video::ITexture top,
video::ITexture bottom,