Irrlicht 3D Engine
ISceneManager.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_MANAGER_H_INCLUDED__
6 #define __I_SCENE_MANAGER_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "irrArray.h"
10 #include "irrString.h"
11 #include "path.h"
12 #include "vector3d.h"
13 #include "dimension2d.h"
14 #include "SColor.h"
15 #include "ETerrainElements.h"
16 #include "ESceneNodeTypes.h"
18 #include "EMeshWriterEnums.h"
19 #include "SceneParameters.h"
20 #include "IGeometryCreator.h"
21 #include "ISkinnedMesh.h"
22 
23 namespace irr
24 {
25  struct SKeyMap;
26  struct SEvent;
27 
28 namespace io
29 {
30  class IReadFile;
31  class IAttributes;
32  class IWriteFile;
33  class IFileSystem;
34 } // end namespace io
35 
36 namespace gui
37 {
38  class IGUIFont;
39  class IGUIEnvironment;
40 } // end namespace gui
41 
42 namespace video
43 {
44  class IVideoDriver;
45  class SMaterial;
46  class IImage;
47  class ITexture;
48 } // end namespace video
49 
50 namespace scene
51 {
53 
56  {
59 
62 
65 
68 
70 
83 
86 
89 
92 
94  ESNRP_SHADOW =64
95  };
96 
97  class IAnimatedMesh;
98  class IAnimatedMeshSceneNode;
99  class IBillboardSceneNode;
100  class IBillboardTextSceneNode;
101  class ICameraSceneNode;
102  class IDummyTransformationSceneNode;
103  class ILightManager;
104  class ILightSceneNode;
105  class IMesh;
106  class IMeshBuffer;
107  class IMeshCache;
108  class IMeshLoader;
109  class IMeshManipulator;
110  class IMeshSceneNode;
111  class IMeshWriter;
112  class IMetaTriangleSelector;
113  class IParticleSystemSceneNode;
114  class ISceneCollisionManager;
115  class ISceneLoader;
116  class ISceneNode;
117  class ISceneNodeAnimator;
118  class ISceneNodeAnimatorCollisionResponse;
119  class ISceneNodeAnimatorFactory;
120  class ISceneNodeFactory;
121  class ISceneUserDataSerializer;
122  class ITerrainSceneNode;
123  class ITextSceneNode;
124  class ITriangleSelector;
125  class IVolumeLightSceneNode;
126 
127  namespace quake3
128  {
129  struct IShader;
130  } // end namespace quake3
131 
133 
150  class ISceneManager : public virtual IReferenceCounted
151  {
152  public:
153 
155 
399  virtual IAnimatedMesh* getMesh(const io::path& filename) = 0;
400 
402 
408  virtual IAnimatedMesh* getMesh(io::IReadFile* file) = 0;
409 
411 
414  virtual IMeshCache* getMeshCache() = 0;
415 
417 
420 
422 
425 
427 
430 
432 
446  const u32 subdivU = 32, const u32 subdivV = 32,
447  const video::SColor foot = video::SColor(51, 0, 230, 180),
448  const video::SColor tail = video::SColor(0, 0, 0, 0),
449  const core::vector3df& position = core::vector3df(0,0,0),
450  const core::vector3df& rotation = core::vector3df(0,0,0),
451  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
452 
454 
464  virtual IMeshSceneNode* addCubeSceneNode(f32 size=10.0f, ISceneNode* parent=0, s32 id=-1,
465  const core::vector3df& position = core::vector3df(0,0,0),
466  const core::vector3df& rotation = core::vector3df(0,0,0),
467  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
468 
470 
484  virtual IMeshSceneNode* addSphereSceneNode(f32 radius=5.0f, s32 polyCount=16,
485  ISceneNode* parent=0, s32 id=-1,
486  const core::vector3df& position = core::vector3df(0,0,0),
487  const core::vector3df& rotation = core::vector3df(0,0,0),
488  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
489 
491 
502  ISceneNode* parent=0, s32 id=-1,
503  const core::vector3df& position = core::vector3df(0,0,0),
504  const core::vector3df& rotation = core::vector3df(0,0,0),
505  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
506  bool alsoAddIfMeshPointerZero=false) = 0;
507 
509 
519  virtual IMeshSceneNode* addMeshSceneNode(IMesh* mesh, ISceneNode* parent=0, s32 id=-1,
520  const core::vector3df& position = core::vector3df(0,0,0),
521  const core::vector3df& rotation = core::vector3df(0,0,0),
522  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
523  bool alsoAddIfMeshPointerZero=false) = 0;
524 
526 
541  f32 waveHeight=2.0f, f32 waveSpeed=300.0f, f32 waveLength=10.0f,
542  ISceneNode* parent=0, s32 id=-1,
543  const core::vector3df& position = core::vector3df(0,0,0),
544  const core::vector3df& rotation = core::vector3df(0,0,0),
545  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
546 
547 
549 
562  s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
563 
565 
567  s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false)
568  {
569  return addOctreeSceneNode(mesh, parent, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
570  }
571 
573 
586  s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
587 
589 
591  s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)
592  {
593  return addOctreeSceneNode(mesh, parent, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
594  }
595 
597 
614  const core::vector3df& position = core::vector3df(0,0,0),
615  const core::vector3df& lookat = core::vector3df(0,0,100),
616  s32 id=-1, bool makeActive=true) = 0;
617 
619 
636  f32 rotateSpeed=-1500.f, f32 zoomSpeed=200.f,
637  f32 translationSpeed=1500.f, s32 id=-1, f32 distance=70.f,
638  bool makeActive=true) =0;
639 
641 
705  f32 rotateSpeed = 100.0f, f32 moveSpeed = 0.5f, s32 id=-1,
706  SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
707  f32 jumpSpeed = 0.f, bool invertMouse=false,
708  bool makeActive=true) = 0;
709 
711 
724  const core::vector3df& position = core::vector3df(0,0,0),
725  video::SColorf color = video::SColorf(1.0f, 1.0f, 1.0f),
726  f32 radius=100.0f, s32 id=-1) = 0;
727 
729 
748  const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
749  const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
750  video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
751 
753 
768  video::ITexture* left, video::ITexture* right, video::ITexture* front,
769  video::ITexture* back, ISceneNode* parent = 0, s32 id=-1) = 0;
770 
772 
790  u32 horiRes=16, u32 vertRes=8,
791  f32 texturePercentage=0.9, f32 spherePercentage=2.0,f32 radius = 1000.f,
792  ISceneNode* parent=0, s32 id=-1) = 0;
793 
795 
808  bool withDefaultEmitter=true, ISceneNode* parent=0, s32 id=-1,
809  const core::vector3df& position = core::vector3df(0,0,0),
810  const core::vector3df& rotation = core::vector3df(0,0,0),
811  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
812 
814 
870  const io::path& heightMapFileName,
871  ISceneNode* parent=0, s32 id=-1,
872  const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
873  const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
874  const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
875  video::SColor vertexColor = video::SColor(255,255,255,255),
876  s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
877  bool addAlsoIfHeightmapEmpty = false) = 0;
878 
880 
908  io::IReadFile* heightMapFile,
909  ISceneNode* parent=0, s32 id=-1,
910  const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
911  const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
912  const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
913  video::SColor vertexColor = video::SColor(255,255,255,255),
914  s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
915  bool addAlsoIfHeightmapEmpty = false) = 0;
916 
918 
921  virtual IMeshSceneNode* addQuake3SceneNode(const IMeshBuffer* meshBuffer, const quake3::IShader * shader,
922  ISceneNode* parent=0, s32 id=-1
923  ) = 0;
924 
925 
927 
931  virtual ISceneNode* addEmptySceneNode(ISceneNode* parent=0, s32 id=-1) = 0;
932 
934 
941  ISceneNode* parent=0, s32 id=-1) = 0;
942 
944  virtual ITextSceneNode* addTextSceneNode(gui::IGUIFont* font, const wchar_t* text,
945  video::SColor color=video::SColor(100,255,255,255),
946  ISceneNode* parent = 0, const core::vector3df& position = core::vector3df(0,0,0),
947  s32 id=-1) = 0;
948 
950 
962  ISceneNode* parent = 0,
963  const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
964  const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
965  video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
966 
968 
995  const core::dimension2d<f32>& tileSize, const core::dimension2d<u32>& tileCount,
996  video::SMaterial* material = 0, f32 hillHeight = 0.0f,
997  const core::dimension2d<f32>& countHills = core::dimension2d<f32>(0.0f, 0.0f),
998  const core::dimension2d<f32>& textureRepeatCount = core::dimension2d<f32>(1.0f, 1.0f)) = 0;
999 
1001 
1023  virtual IAnimatedMesh* addTerrainMesh(const io::path& meshname,
1024  video::IImage* texture, video::IImage* heightmap,
1025  const core::dimension2d<f32>& stretchSize = core::dimension2d<f32>(10.0f,10.0f),
1026  f32 maxHeight=200.0f,
1027  const core::dimension2d<u32>& defaultVertexBlockSize = core::dimension2d<u32>(64,64)) = 0;
1028 
1030 
1041  virtual IAnimatedMesh* addArrowMesh(const io::path& name,
1042  video::SColor vtxColorCylinder=0xFFFFFFFF,
1043  video::SColor vtxColorCone=0xFFFFFFFF,
1044  u32 tesselationCylinder=4, u32 tesselationCone=8,
1045  f32 height=1.f, f32 cylinderHeight=0.6f,
1046  f32 widthCylinder=0.05f, f32 widthCone=0.3f) = 0;
1047 
1049 
1055  virtual IAnimatedMesh* addSphereMesh(const io::path& name,
1056  f32 radius=5.f, u32 polyCountX = 16,
1057  u32 polyCountY = 16) = 0;
1058 
1060 
1069  const u32 SubdivideU = 32, const u32 SubdivideV = 32,
1070  const video::SColor FootColor = video::SColor(51, 0, 230, 180),
1071  const video::SColor TailColor = video::SColor(0, 0, 0, 0)) = 0;
1072 
1074 
1081 
1083 
1090  virtual ISceneNode* getSceneNodeFromId(s32 id, ISceneNode* start=0) = 0;
1091 
1093 
1100  virtual ISceneNode* getSceneNodeFromName(const c8* name, ISceneNode* start=0) = 0;
1101 
1103 
1111 
1113 
1120  ISceneNode* start=0) = 0;
1121 
1123 
1126  virtual ICameraSceneNode* getActiveCamera() const =0;
1127 
1129 
1131  virtual void setActiveCamera(ICameraSceneNode* camera) = 0;
1132 
1134  virtual void setShadowColor(video::SColor color = video::SColor(150,0,0,0)) = 0;
1135 
1137  virtual video::SColor getShadowColor() const = 0;
1138 
1140 
1150 
1152 
1156  virtual void drawAll() = 0;
1157 
1159 
1164  virtual ISceneNodeAnimator* createRotationAnimator(const core::vector3df& rotationSpeed) = 0;
1165 
1167 
1180  const core::vector3df& center=core::vector3df(0.f,0.f,0.f),
1181  f32 radius=100.f, f32 speed=0.001f,
1182  const core::vector3df& direction=core::vector3df(0.f, 1.f, 0.f),
1183  f32 startPosition = 0.f,
1184  f32 radiusEllipsoid = 0.f) = 0;
1185 
1187 
1200  const core::vector3df& endPoint, u32 timeForWay, bool loop=false, bool pingpong = false) = 0;
1201 
1203 
1213  s32 timePerFrame, bool loop=true) = 0;
1214 
1216 
1222 
1224 
1255  ITriangleSelector* world, ISceneNode* sceneNode,
1256  const core::vector3df& ellipsoidRadius = core::vector3df(30,60,30),
1257  const core::vector3df& gravityPerSecond = core::vector3df(0,-10.0f,0),
1258  const core::vector3df& ellipsoidTranslation = core::vector3df(0,0,0),
1259  f32 slidingValue = 0.0005f) = 0;
1260 
1262 
1271  const core::array< core::vector3df >& points,
1272  f32 speed = 1.0f, f32 tightness = 0.5f, bool loop=true, bool pingpong=false) = 0;
1273 
1275 
1294 
1296 
1302 
1303 
1305 
1314 
1316 
1339  ISceneNode* node, s32 minimalPolysPerNode=32) = 0;
1340 
1342 
1344  ISceneNode* node, s32 minimalPolysPerNode=32)
1345  {
1346  return createOctreeTriangleSelector(mesh, node, minimalPolysPerNode);
1347  }
1348 
1350 
1358 
1360 
1366  ITerrainSceneNode* node, s32 LOD=0) = 0;
1367 
1369 
1375  virtual void addExternalMeshLoader(IMeshLoader* externalLoader) = 0;
1376 
1378  virtual u32 getMeshLoaderCount() const = 0;
1379 
1381 
1384  virtual IMeshLoader* getMeshLoader(u32 index) const = 0;
1385 
1387 
1393  virtual void addExternalSceneLoader(ISceneLoader* externalLoader) = 0;
1394 
1396  virtual u32 getSceneLoaderCount() const = 0;
1397 
1399 
1402  virtual ISceneLoader* getSceneLoader(u32 index) const = 0;
1403 
1405 
1408 
1410 
1413 
1415 
1423  virtual void addToDeletionQueue(ISceneNode* node) = 0;
1424 
1426 
1428  virtual bool postEventFromUser(const SEvent& event) = 0;
1429 
1431 
1432  virtual void clear() = 0;
1433 
1435 
1441 
1443 
1450 
1452 
1455 
1457 
1459  virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;
1460 
1463 
1465 
1468 
1470 
1473 
1475 
1478 
1481 
1483 
1486 
1488  virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;
1489 
1492 
1494 
1496  virtual ISceneNode* addSceneNode(const char* sceneNodeTypeName, ISceneNode* parent=0) = 0;
1497 
1499 
1503  virtual ISceneNodeAnimator* createSceneNodeAnimator(const char* typeName, ISceneNode* target=0) = 0;
1504 
1506 
1524  virtual ISceneManager* createNewSceneManager(bool cloneContent=false) = 0;
1525 
1527 
1542  virtual bool saveScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1543 
1545 
1560  virtual bool saveScene(io::IWriteFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1561 
1563 
1580  virtual bool saveScene(io::IXMLWriter* writer, const io::path& currentPath, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1581 
1583 
1599  virtual bool loadScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
1600 
1602 
1618  virtual bool loadScene(io::IReadFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
1619 
1621 
1624 
1626 
1629 
1631  virtual void setAmbientLight(const video::SColorf &ambientColor) = 0;
1632 
1634  virtual const video::SColorf& getAmbientLight() const = 0;
1635 
1637 
1639  virtual void setLightManager(ILightManager* lightManager) = 0;
1640 
1642 
1644  virtual const IGeometryCreator* getGeometryCreator(void) const = 0;
1645 
1647 
1655  virtual bool isCulled(const ISceneNode* node) const =0;
1656  };
1657 
1658 
1659 } // end namespace scene
1660 } // end namespace irr
1661 
1662 #endif
1663 
Header file containing all scene parameters for modifying mesh loading etc.
Base class of most objects of the Irrlicht Engine.
Self reallocating template array (like stl vector) with additional features.
Definition: irrArray.h:23
Specifies a 2 dimensional size.
Definition: dimension2d.h:21
3d vector template class with lots of operators and methods.
Definition: vector3d.h:23
GUI Environment. Used as factory and manager of all other GUI elements.
Font interface.
Definition: IGUIFont.h:40
Provides a generic interface for attributes and their values and the possiblity to serialize them.
Definition: IAttributes.h:42
The FileSystem manages files and archives and provides access to them.
Definition: IFileSystem.h:33
Interface providing read acess to a file.
Definition: IReadFile.h:18
Interface providing write access to a file.
Definition: IWriteFile.h:18
Interface providing methods for making it easier to write XML files.
Definition: IXMLWriter.h:21
Interface for an animated mesh.
Definition: IAnimatedMesh.h:63
Scene node capable of displaying an animated mesh and its shadow.
Scene Node which is a (controlable) camera.
Dummy scene node for adding additional transformations to the scene graph.
Helper class for creating geometry on the fly.
ILightManager provides an interface for user applications to manipulate the list of lights in the sce...
Definition: ILightManager.h:26
Scene node which is a dynamic light.
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:40
The mesh cache stores already loaded meshes and provides an interface to them.
Definition: IMeshCache.h:28
Class which holds the geometry of an object.
Definition: IMesh.h:24
Class which is able to load an animated mesh from a file.
Definition: IMeshLoader.h:27
An interface for easy manipulation of meshes.
A scene node displaying a static mesh.
Interface for writing meshes.
Definition: IMeshWriter.h:24
Interface for making multiple triangle selectors work as one big selector.
A particle system scene node for creating snow, fire, exlosions, smoke...
The Scene Collision Manager provides methods for performing collision tests and picking on scene node...
Class which can load a scene into the scene manager.
Definition: ISceneLoader.h:27
The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff.
virtual IBillboardSceneNode * addBillboardSceneNode(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 colorTop=0xFFFFFFFF, video::SColor colorBottom=0xFFFFFFFF)=0
Adds a billboard scene node to the scene graph.
virtual void setLightManager(ILightManager *lightManager)=0
Register a custom callbacks manager which gets callbacks during scene rendering.
virtual ISceneNode * getSceneNodeFromId(s32 id, ISceneNode *start=0)=0
Get the first scene node with the specified id.
virtual void drawAll()=0
Draws all the scene nodes.
virtual IMeshManipulator * getMeshManipulator()=0
Get pointer to the mesh manipulator.
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 void addToDeletionQueue(ISceneNode *node)=0
Adds a scene node to the deletion queue.
virtual ISceneNode * getSceneNodeFromName(const c8 *name, ISceneNode *start=0)=0
Get the first scene node with the specified name.
virtual ISceneNodeAnimator * createDeleteAnimator(u32 timeMs)=0
Creates a scene node animator, which deletes the scene node after some time automatically.
virtual ICameraSceneNode * addCameraSceneNodeMaya(ISceneNode *parent=0, f32 rotateSpeed=-1500.f, f32 zoomSpeed=200.f, f32 translationSpeed=1500.f, s32 id=-1, f32 distance=70.f, bool makeActive=true)=0
Adds a maya style user controlled camera scene node to the scene graph.
virtual IParticleSystemSceneNode * 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))=0
Adds a particle system scene node to the scene graph.
virtual ISceneNodeFactory * getDefaultSceneNodeFactory()=0
Get the default scene node factory which can create all built in scene nodes.
virtual bool loadScene(io::IReadFile *file, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *rootNode=0)=0
Loads a scene. Note that the current scene is not cleared before.
virtual ITerrainSceneNode * addTerrainSceneNode(const io::path &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 ISceneNode * addSceneNode(const char *sceneNodeTypeName, ISceneNode *parent=0)=0
Adds a scene node to the scene by name.
virtual IMeshSceneNode * 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))=0
Adds a cube scene node.
virtual ITriangleSelector * createTriangleSelector(IMesh *mesh, ISceneNode *node)=0
Creates a simple ITriangleSelector, based on a mesh.
virtual ISceneNodeAnimator * createRotationAnimator(const core::vector3df &rotationSpeed)=0
Creates a rotation animator, which rotates the attached scene node around itself.
virtual ISceneNode * addSkyBoxSceneNode(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 E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const =0
Get current render pass.
virtual ISceneNodeAnimator * createFlyCircleAnimator(const core::vector3df &center=core::vector3df(0.f, 0.f, 0.f), f32 radius=100.f, f32 speed=0.001f, const core::vector3df &direction=core::vector3df(0.f, 1.f, 0.f), f32 startPosition=0.f, f32 radiusEllipsoid=0.f)=0
Creates a fly circle animator, which lets the attached scene node fly around a center.
virtual ILightSceneNode * 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)=0
Adds a dynamic light scene node to the scene graph.
virtual IAnimatedMesh * addHillPlaneMesh(const io::path &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 ISceneNode * addEmptySceneNode(ISceneNode *parent=0, s32 id=-1)=0
Adds an empty scene node to the scene graph.
virtual u32 getSceneLoaderCount() const =0
Returns the number of scene loaders supported by Irrlicht at this time.
virtual u32 getRegisteredSceneNodeFactoryCount() const =0
Get amount of registered scene node factories.
virtual ISceneCollisionManager * getSceneCollisionManager()=0
Get pointer to the scene collision manager.
virtual IMeshCache * getMeshCache()=0
Get interface to the mesh cache which is shared beween all existing scene managers.
virtual io::IAttributes * getParameters()=0
Get interface to the parameters set in this scene.
virtual ITriangleSelector * createOctreeTriangleSelector(IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)=0
Creates a Triangle Selector, optimized by an octree.
virtual ISceneNode * getRootSceneNode()=0
Gets the root scene node.
virtual IMeshSceneNode * addOctreeSceneNode(IAnimatedMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering using a octree to the scene graph.
virtual ISceneLoader * getSceneLoader(u32 index) const =0
Retrieve the given scene loader.
virtual IMeshSceneNode * addQuake3SceneNode(const IMeshBuffer *meshBuffer, const quake3::IShader *shader, ISceneNode *parent=0, s32 id=-1)=0
Adds a quake3 scene node to the scene graph.
virtual ISceneNode * getSceneNodeFromType(scene::ESCENE_NODE_TYPE type, ISceneNode *start=0)=0
Get the first scene node with the specified type.
virtual void setActiveCamera(ICameraSceneNode *camera)=0
Sets the currently active camera.
virtual bool saveScene(io::IWriteFile *file, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual ISceneNode * addWaterSurfaceSceneNode(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 IAnimatedMesh * getMesh(const io::path &filename)=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
virtual ISkinnedMesh * createSkinnedMesh()=0
Get a skinned mesh, which is not available as header-only code.
virtual ISceneNodeAnimatorCollisionResponse * createCollisionResponseAnimator(ITriangleSelector *world, ISceneNode *sceneNode, const core::vector3df &ellipsoidRadius=core::vector3df(30, 60, 30), const core::vector3df &gravityPerSecond=core::vector3df(0,-10.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.
_IRR_DEPRECATED_ ITriangleSelector * createOctTreeTriangleSelector(IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)
//! Creates a Triangle Selector, optimized by an octree.
virtual bool saveScene(const io::path &filename, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual IAnimatedMesh * addVolumeLightMesh(const io::path &name, const u32 SubdivideU=32, const u32 SubdivideV=32, const video::SColor FootColor=video::SColor(51, 0, 230, 180), const video::SColor TailColor=video::SColor(0, 0, 0, 0))=0
Add a volume light mesh to the meshpool.
virtual ICameraSceneNode * getActiveCamera() const =0
Get the current active camera.
virtual void registerSceneNodeFactory(ISceneNodeFactory *factoryToAdd)=0
Adds a scene node factory to the scene manager.
virtual IVolumeLightSceneNode * addVolumeLightSceneNode(ISceneNode *parent=0, s32 id=-1, const u32 subdivU=32, const u32 subdivV=32, const video::SColor foot=video::SColor(51, 0, 230, 180), const video::SColor tail=video::SColor(0, 0, 0, 0), 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 Volume Lighting Scene Node.
virtual void addExternalMeshLoader(IMeshLoader *externalLoader)=0
Adds an external mesh loader for extending the engine with new file formats.
virtual bool saveScene(io::IXMLWriter *writer, const io::path &currentPath, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual IBillboardTextSceneNode * addBillboardTextSceneNode(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 colorTop=0xFFFFFFFF, video::SColor colorBottom=0xFFFFFFFF)=0
Adds a text scene node, which uses billboards. The node, and the text on it, will scale with distance...
virtual ISceneNodeAnimator * createFlyStraightAnimator(const core::vector3df &startPoint, const core::vector3df &endPoint, u32 timeForWay, bool loop=false, bool pingpong=false)=0
Creates a fly straight animator, which lets the attached scene node fly or move along a line between ...
virtual void setAmbientLight(const video::SColorf &ambientColor)=0
Sets ambient color of the scene.
virtual IAnimatedMeshSceneNode * 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)=0
Adds a scene node for rendering an animated mesh model.
virtual void addExternalSceneLoader(ISceneLoader *externalLoader)=0
Adds an external scene loader for extending the engine with new file formats.
virtual ISceneManager * createNewSceneManager(bool cloneContent=false)=0
Creates a new scene manager.
virtual ISceneNodeAnimatorFactory * getSceneNodeAnimatorFactory(u32 index)=0
Get scene node animator factory by index.
virtual const IGeometryCreator * getGeometryCreator(void) const =0
Get an instance of a geometry creator.
virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type, core::array< scene::ISceneNode * > &outNodes, ISceneNode *start=0)=0
Get scene nodes by type.
virtual const video::SColorf & getAmbientLight() const =0
Get ambient color of the scene.
virtual IAnimatedMesh * addSphereMesh(const io::path &name, f32 radius=5.f, u32 polyCountX=16, u32 polyCountY=16)=0
add a static sphere mesh to the meshpool
virtual const c8 * getSceneNodeTypeName(ESCENE_NODE_TYPE type)=0
Get typename from a scene node type or null if not found.
virtual IMeshSceneNode * 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)=0
Adds a scene node for rendering a static mesh.
virtual bool loadScene(const io::path &filename, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *rootNode=0)=0
Loads a scene. Note that the current scene is not cleared before.
virtual ISceneNode * addSkyDomeSceneNode(video::ITexture *texture, u32 horiRes=16, u32 vertRes=8, f32 texturePercentage=0.9, f32 spherePercentage=2.0, f32 radius=1000.f, ISceneNode *parent=0, s32 id=-1)=0
Adds a skydome scene node to the scene graph.
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 ISceneNodeAnimator * createFollowSplineAnimator(s32 startTime, const core::array< core::vector3df > &points, f32 speed=1.0f, f32 tightness=0.5f, bool loop=true, bool pingpong=false)=0
Creates a follow spline animator.
virtual void clear()=0
Clears the whole scene.
virtual u32 getMeshLoaderCount() const =0
Returns the number of mesh loaders supported by Irrlicht at this time.
virtual ITriangleSelector * createTriangleSelector(IAnimatedMeshSceneNode *node)=0
Creates a simple ITriangleSelector, based on an animated mesh scene node.
virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const =0
Get amount of registered scene node animator factories.
virtual IMeshSceneNode * addOctreeSceneNode(IMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering using a octree to the scene graph.
virtual IAnimatedMesh * addArrowMesh(const io::path &name, video::SColor vtxColorCylinder=0xFFFFFFFF, video::SColor vtxColorCone=0xFFFFFFFF, u32 tesselationCylinder=4, u32 tesselationCone=8, f32 height=1.f, f32 cylinderHeight=0.6f, f32 widthCylinder=0.05f, f32 widthCone=0.3f)=0
add a static arrow mesh to the meshpool
virtual ICameraSceneNode * addCameraSceneNodeFPS(ISceneNode *parent=0, f32 rotateSpeed=100.0f, f32 moveSpeed=0.5f, s32 id=-1, SKeyMap *keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false, f32 jumpSpeed=0.f, bool invertMouse=false, bool makeActive=true)=0
Adds a camera scene node with an animator which provides mouse and keyboard control appropriate for f...
virtual IAnimatedMesh * addTerrainMesh(const io::path &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< u32 > &defaultVertexBlockSize=core::dimension2d< u32 >(64, 64))=0
Adds a static terrain mesh to the mesh pool.
virtual video::SColor getShadowColor() const =0
Get the current color of shadows.
virtual ISceneNodeAnimator * createSceneNodeAnimator(const char *typeName, ISceneNode *target=0)=0
creates a scene node animator based on its type name
virtual bool postEventFromUser(const SEvent &event)=0
Posts an input event to the environment.
virtual ISceneNodeFactory * getSceneNodeFactory(u32 index)=0
Get a scene node factory by index.
virtual IMeshSceneNode * addSphereSceneNode(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 of the given radius and detail.
virtual IDummyTransformationSceneNode * addDummyTransformationSceneNode(ISceneNode *parent=0, s32 id=-1)=0
Adds a dummy transformation scene node to the scene graph.
virtual gui::IGUIEnvironment * getGUIEnvironment()=0
Get the active GUIEnvironment.
_IRR_DEPRECATED_ IMeshSceneNode * addOctTreeSceneNode(IAnimatedMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false)
Adds a scene node for rendering using a octree to the scene graph.
virtual ITriangleSelector * createTriangleSelectorFromBoundingBox(ISceneNode *node)=0
Creates a simple dynamic ITriangleSelector, based on a axis aligned bounding box.
virtual io::IFileSystem * getFileSystem()=0
Get the active FileSystem.
virtual ISceneNodeAnimatorFactory * getDefaultSceneNodeAnimatorFactory()=0
Get the default scene node animator factory which can create all built-in scene node animators.
virtual ISceneNodeAnimator * createTextureAnimator(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 t...
virtual ITextSceneNode * addTextSceneNode(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 ITerrainSceneNode * addTerrainSceneNode(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 IMeshWriter * createMeshWriter(EMESH_WRITER_TYPE type)=0
Get a mesh writer implementation if available.
virtual IMetaTriangleSelector * createMetaTriangleSelector()=0
Creates a meta triangle selector.
virtual const c8 * getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type)=0
Returns a typename from a scene node animator type or null if not found.
virtual IAnimatedMesh * getMesh(io::IReadFile *file)=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
_IRR_DEPRECATED_ IMeshSceneNode * addOctTreeSceneNode(IMesh *mesh, ISceneNode *parent=0, s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)
Adds a scene node for rendering using a octree to the scene graph.
virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory *factoryToAdd)=0
Adds a scene node animator factory to the scene manager.
virtual ITriangleSelector * createTerrainTriangleSelector(ITerrainSceneNode *node, s32 LOD=0)=0
Creates a triangle selector which can select triangles from a terrain scene node.
virtual IMeshLoader * getMeshLoader(u32 index) const =0
Retrieve the given mesh loader.
virtual ICameraSceneNode * 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, bool makeActive=true)=0
Adds a camera scene node to the scene graph and sets it as active camera.
virtual video::IVideoDriver * getVideoDriver()=0
Get the video driver.
virtual bool isCulled(const ISceneNode *node) const =0
Check if node is culled in current view frustum.
Special scene node animator for doing automatic collision detection and response.
Interface for dynamic creation of scene node animators.
Animates a scene node. Can animate position, rotation, material, and so on.
Interface for dynamic creation of scene nodes.
Scene node interface.
Definition: ISceneNode.h:41
Interface to read and write user data to and from .irr files.
Interface for using some special functions of Skinned meshes.
Definition: ISkinnedMesh.h:33
A scene node for displaying terrain using the geo mip map algorithm.
A scene node for displaying 2d text at a position in three dimensional space.
Interface to return triangles with specific properties.
Interface for software image data.
Definition: IImage.h:23
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:99
Interface to driver which is able to perform 2d and 3d graphics functions.
Definition: IVideoDriver.h:257
Class representing a 32 bit ARGB color.
Definition: SColor.h:202
Class representing a color with four floats.
Definition: SColor.h:459
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:227
#define _IRR_DEPRECATED_
Defines a deprecated macro which generates a warning at compile time.
Definition: irrTypes.h:195
ESCENE_NODE_ANIMATOR_TYPE
An enumeration for all types of built-in scene node animators.
EMESH_WRITER_TYPE
An enumeration for all supported types of built-in mesh writers.
E_TERRAIN_PATCH_SIZE
enumeration for patch sizes specifying the size of patches in the TerrainSceneNode
@ ETPS_17
patch size of 17, at most, use 5 levels of detail with this patch size.
E_SCENE_NODE_RENDER_PASS
Enumeration for render passes.
Definition: ISceneManager.h:56
@ ESNRP_LIGHT
In this pass, lights are transformed into camera space and added to the driver.
Definition: ISceneManager.h:64
@ ESNRP_NONE
No pass currently active.
Definition: ISceneManager.h:58
@ ESNRP_CAMERA
Camera pass. The active view is set up here. The very first pass.
Definition: ISceneManager.h:61
@ ESNRP_TRANSPARENT_EFFECT
Transparent effect scene nodes, drawn after Transparent nodes. They are sorted from back to front and...
Definition: ISceneManager.h:91
@ ESNRP_AUTOMATIC
All normal objects can use this for registering themselves.
Definition: ISceneManager.h:82
@ ESNRP_SKY_BOX
This is used for sky boxes.
Definition: ISceneManager.h:67
@ ESNRP_SOLID
Solid scene nodes or special scene nodes without materials.
Definition: ISceneManager.h:85
@ ESNRP_TRANSPARENT
Transparent scene nodes, drawn after solid nodes. They are sorted from back to front and drawn in tha...
Definition: ISceneManager.h:88
@ ESNRP_SHADOW
Drawn after the solid nodes, before the transparent nodes, the time for drawing shadow volumes.
Definition: ISceneManager.h:94
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:13
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
char c8
8 bit character variable.
Definition: irrTypes.h:31
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
SEvents hold information about an event. See irr::IEventReceiver for details on event handling.
Struct storing which key belongs to which action.
Definition: SKeyMap.h:30
A Parsed Shader Holding Variables ordered in Groups.
Definition: IQ3Shader.h:639