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 #include "IXMLWriter.h"
23 
24 namespace irr
25 {
26  struct SKeyMap;
27  struct SEvent;
28 
29 namespace io
30 {
31  class IReadFile;
32  class IAttributes;
33  class IWriteFile;
34  class IFileSystem;
35 } // end namespace io
36 
37 namespace gui
38 {
39  class IGUIFont;
40  class IGUIEnvironment;
41 } // end namespace gui
42 
43 namespace video
44 {
45  class IVideoDriver;
46  class SMaterial;
47  class IImage;
48  class ITexture;
49 } // end namespace video
50 
51 namespace scene
52 {
54 
57  {
60 
63 
66 
69 
71 
84 
87 
90 
93 
96  };
97 
98  class IAnimatedMesh;
99  class IAnimatedMeshSceneNode;
100  class IBillboardSceneNode;
101  class IBillboardTextSceneNode;
102  class ICameraSceneNode;
103  class IDummyTransformationSceneNode;
104  class ILightManager;
105  class ILightSceneNode;
106  class IMesh;
107  class IMeshBuffer;
108  class IMeshCache;
109  class IMeshLoader;
110  class IMeshManipulator;
111  class IMeshSceneNode;
112  class IMeshWriter;
113  class IMetaTriangleSelector;
114  class IOctreeSceneNode;
115  class IParticleSystemSceneNode;
116  class ISceneCollisionManager;
117  class ISceneLoader;
118  class ISceneNode;
119  class ISceneNodeAnimator;
120  class ISceneNodeAnimatorCollisionResponse;
121  class ISceneNodeAnimatorFactory;
122  class ISceneNodeFactory;
123  class ISceneUserDataSerializer;
124  class ITerrainSceneNode;
125  class ITextSceneNode;
126  class ITriangleSelector;
127  class IVolumeLightSceneNode;
128 
129  namespace quake3
130  {
131  struct IShader;
132  } // end namespace quake3
133 
135 
152  class ISceneManager : public virtual IReferenceCounted
153  {
154  public:
155 
157 
387  virtual IAnimatedMesh* getMesh(const io::path& filename, const io::path& alternativeCacheName=io::path("")) = 0;
388 
390 
396  virtual IAnimatedMesh* getMesh(io::IReadFile* file) = 0;
397 
399 
402  virtual IMeshCache* getMeshCache() = 0;
403 
405 
407  virtual video::IVideoDriver* getVideoDriver() = 0;
408 
410 
413 
415 
417  virtual io::IFileSystem* getFileSystem() = 0;
418 
420 
434  const u32 subdivU = 32, const u32 subdivV = 32,
435  const video::SColor foot = video::SColor(51, 0, 230, 180),
436  const video::SColor tail = video::SColor(0, 0, 0, 0),
437  const core::vector3df& position = core::vector3df(0,0,0),
438  const core::vector3df& rotation = core::vector3df(0,0,0),
439  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
440 
442 
452  virtual IMeshSceneNode* addCubeSceneNode(f32 size=10.0f, ISceneNode* parent=0, s32 id=-1,
453  const core::vector3df& position = core::vector3df(0,0,0),
454  const core::vector3df& rotation = core::vector3df(0,0,0),
455  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
456 
458 
472  virtual IMeshSceneNode* addSphereSceneNode(f32 radius=5.0f, s32 polyCount=16,
473  ISceneNode* parent=0, s32 id=-1,
474  const core::vector3df& position = core::vector3df(0,0,0),
475  const core::vector3df& rotation = core::vector3df(0,0,0),
476  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
477 
479 
490  ISceneNode* parent=0, s32 id=-1,
491  const core::vector3df& position = core::vector3df(0,0,0),
492  const core::vector3df& rotation = core::vector3df(0,0,0),
493  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
494  bool alsoAddIfMeshPointerZero=false) = 0;
495 
497 
507  virtual IMeshSceneNode* addMeshSceneNode(IMesh* mesh, ISceneNode* parent=0, s32 id=-1,
508  const core::vector3df& position = core::vector3df(0,0,0),
509  const core::vector3df& rotation = core::vector3df(0,0,0),
510  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
511  bool alsoAddIfMeshPointerZero=false) = 0;
512 
514 
529  f32 waveHeight=2.0f, f32 waveSpeed=300.0f, f32 waveLength=10.0f,
530  ISceneNode* parent=0, s32 id=-1,
531  const core::vector3df& position = core::vector3df(0,0,0),
532  const core::vector3df& rotation = core::vector3df(0,0,0),
533  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
534 
535 
537 
550  s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
551 
553 
565  virtual IOctreeSceneNode* addOctreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
566  s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
567 
569 
585  virtual ICameraSceneNode* addCameraSceneNode(ISceneNode* parent = 0,
586  const core::vector3df& position = core::vector3df(0,0,0),
587  const core::vector3df& lookat = core::vector3df(0,0,100),
588  s32 id=-1, bool makeActive=true) = 0;
589 
591 
608  f32 rotateSpeed=-1500.f, f32 zoomSpeed=200.f,
609  f32 translationSpeed=1500.f, s32 id=-1, f32 distance=70.f,
610  bool makeActive=true) =0;
611 
613 
677  f32 rotateSpeed = 100.0f, f32 moveSpeed = 0.5f, s32 id=-1,
678  SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
679  f32 jumpSpeed = 0.f, bool invertMouse=false,
680  bool makeActive=true) = 0;
681 
683 
695  virtual ILightSceneNode* addLightSceneNode(ISceneNode* parent = 0,
696  const core::vector3df& position = core::vector3df(0,0,0),
697  video::SColorf color = video::SColorf(1.0f, 1.0f, 1.0f),
698  f32 radius=100.0f, s32 id=-1) = 0;
699 
701 
720  const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
721  const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
722  video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
723 
725 
740  video::ITexture* left, video::ITexture* right, video::ITexture* front,
741  video::ITexture* back, ISceneNode* parent = 0, s32 id=-1) = 0;
742 
744 
762  u32 horiRes=16, u32 vertRes=8,
763  f32 texturePercentage=0.9, f32 spherePercentage=2.0,f32 radius = 1000.f,
764  ISceneNode* parent=0, s32 id=-1) = 0;
765 
767 
780  bool withDefaultEmitter=true, ISceneNode* parent=0, s32 id=-1,
781  const core::vector3df& position = core::vector3df(0,0,0),
782  const core::vector3df& rotation = core::vector3df(0,0,0),
783  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
784 
786 
842  const io::path& heightMapFileName,
843  ISceneNode* parent=0, s32 id=-1,
844  const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
845  const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
846  const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
847  video::SColor vertexColor = video::SColor(255,255,255,255),
848  s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
849  bool addAlsoIfHeightmapEmpty = false) = 0;
850 
852 
880  io::IReadFile* heightMapFile,
881  ISceneNode* parent=0, s32 id=-1,
882  const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
883  const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
884  const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
885  video::SColor vertexColor = video::SColor(255,255,255,255),
886  s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
887  bool addAlsoIfHeightmapEmpty = false) = 0;
888 
890 
893  virtual IMeshSceneNode* addQuake3SceneNode(const IMeshBuffer* meshBuffer, const quake3::IShader * shader,
894  ISceneNode* parent=0, s32 id=-1
895  ) = 0;
896 
897 
899 
903  virtual ISceneNode* addEmptySceneNode(ISceneNode* parent=0, s32 id=-1) = 0;
904 
906 
913  ISceneNode* parent=0, s32 id=-1) = 0;
914 
916  virtual ITextSceneNode* addTextSceneNode(gui::IGUIFont* font, const wchar_t* text,
917  video::SColor color=video::SColor(100,255,255,255),
918  ISceneNode* parent = 0, const core::vector3df& position = core::vector3df(0,0,0),
919  s32 id=-1) = 0;
920 
922 
933  virtual IBillboardTextSceneNode* addBillboardTextSceneNode( gui::IGUIFont* font, const wchar_t* text,
934  ISceneNode* parent = 0,
935  const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
936  const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
937  video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
938 
940 
966  virtual IAnimatedMesh* addHillPlaneMesh(const io::path& name,
967  const core::dimension2d<f32>& tileSize, const core::dimension2d<u32>& tileCount,
968  video::SMaterial* material = 0, f32 hillHeight = 0.0f,
969  const core::dimension2d<f32>& countHills = core::dimension2d<f32>(0.0f, 0.0f),
970  const core::dimension2d<f32>& textureRepeatCount = core::dimension2d<f32>(1.0f, 1.0f)) = 0;
971 
973 
995  virtual IAnimatedMesh* addTerrainMesh(const io::path& meshname,
996  video::IImage* texture, video::IImage* heightmap,
997  const core::dimension2d<f32>& stretchSize = core::dimension2d<f32>(10.0f,10.0f),
998  f32 maxHeight=200.0f,
999  const core::dimension2d<u32>& defaultVertexBlockSize = core::dimension2d<u32>(64,64)) = 0;
1000 
1002 
1013  virtual IAnimatedMesh* addArrowMesh(const io::path& name,
1014  video::SColor vtxColorCylinder=0xFFFFFFFF,
1015  video::SColor vtxColorCone=0xFFFFFFFF,
1016  u32 tesselationCylinder=4, u32 tesselationCone=8,
1017  f32 height=1.f, f32 cylinderHeight=0.6f,
1018  f32 widthCylinder=0.05f, f32 widthCone=0.3f) = 0;
1019 
1021 
1027  virtual IAnimatedMesh* addSphereMesh(const io::path& name,
1028  f32 radius=5.f, u32 polyCountX = 16,
1029  u32 polyCountY = 16) = 0;
1030 
1032 
1040  virtual IAnimatedMesh* addVolumeLightMesh(const io::path& name,
1041  const u32 SubdivideU = 32, const u32 SubdivideV = 32,
1042  const video::SColor FootColor = video::SColor(51, 0, 230, 180),
1043  const video::SColor TailColor = video::SColor(0, 0, 0, 0)) = 0;
1044 
1046 
1052  virtual ISceneNode* getRootSceneNode() = 0;
1053 
1055 
1062  virtual ISceneNode* getSceneNodeFromId(s32 id, ISceneNode* start=0) = 0;
1063 
1065 
1072  virtual ISceneNode* getSceneNodeFromName(const c8* name, ISceneNode* start=0) = 0;
1073 
1075 
1083 
1085 
1090  virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type,
1092  ISceneNode* start=0) = 0;
1093 
1095 
1098  virtual ICameraSceneNode* getActiveCamera() const =0;
1099 
1101 
1103  virtual void setActiveCamera(ICameraSceneNode* camera) = 0;
1104 
1106  virtual void setShadowColor(video::SColor color = video::SColor(150,0,0,0)) = 0;
1107 
1109  virtual video::SColor getShadowColor() const = 0;
1110 
1112 
1120  virtual u32 registerNodeForRendering(ISceneNode* node,
1122 
1124 
1127  virtual void clearAllRegisteredNodesForRendering() = 0;
1128 
1130 
1134  virtual void drawAll() = 0;
1135 
1137 
1142  virtual ISceneNodeAnimator* createRotationAnimator(const core::vector3df& rotationSpeed) = 0;
1143 
1145 
1158  const core::vector3df& center=core::vector3df(0.f,0.f,0.f),
1159  f32 radius=100.f, f32 speed=0.001f,
1160  const core::vector3df& direction=core::vector3df(0.f, 1.f, 0.f),
1161  f32 startPosition = 0.f,
1162  f32 radiusEllipsoid = 0.f) = 0;
1163 
1165 
1178  const core::vector3df& endPoint, u32 timeForWay, bool loop=false, bool pingpong = false) = 0;
1179 
1181 
1191  s32 timePerFrame, bool loop=true) = 0;
1192 
1194 
1199  virtual ISceneNodeAnimator* createDeleteAnimator(u32 timeMs) = 0;
1200 
1202 
1233  ITriangleSelector* world, ISceneNode* sceneNode,
1234  const core::vector3df& ellipsoidRadius = core::vector3df(30,60,30),
1235  const core::vector3df& gravityPerSecond = core::vector3df(0,-10.0f,0),
1236  const core::vector3df& ellipsoidTranslation = core::vector3df(0,0,0),
1237  f32 slidingValue = 0.0005f) = 0;
1238 
1240 
1249  const core::array< core::vector3df >& points,
1250  f32 speed = 1.0f, f32 tightness = 0.5f, bool loop=true, bool pingpong=false) = 0;
1251 
1253 
1273  virtual ITriangleSelector* createTriangleSelector(IMesh* mesh, ISceneNode* node, bool separateMeshbuffers=false) = 0;
1274 
1276 
1282  virtual ITriangleSelector* createTriangleSelector(const IMeshBuffer* meshBuffer, irr::u32 materialIndex, ISceneNode* node) = 0;
1283 
1285 
1290  virtual ITriangleSelector* createTriangleSelector(IAnimatedMeshSceneNode* node, bool separateMeshbuffers=false) = 0;
1291 
1292 
1294 
1303 
1305 
1328  ISceneNode* node, s32 minimalPolysPerNode=32) = 0;
1329 
1331 
1354  virtual ITriangleSelector* createOctreeTriangleSelector(IMeshBuffer* meshBuffer, irr::u32 materialIndex,
1355  ISceneNode* node, s32 minimalPolysPerNode=32) = 0;
1356 
1358 
1360  ISceneNode* node, s32 minimalPolysPerNode=32)
1361  {
1362  return createOctreeTriangleSelector(mesh, node, minimalPolysPerNode);
1363  }
1364 
1366 
1374 
1376 
1382  ITerrainSceneNode* node, s32 LOD=0) = 0;
1383 
1385 
1391  virtual void addExternalMeshLoader(IMeshLoader* externalLoader) = 0;
1392 
1394  virtual u32 getMeshLoaderCount() const = 0;
1395 
1397 
1400  virtual IMeshLoader* getMeshLoader(u32 index) const = 0;
1401 
1403 
1409  virtual void addExternalSceneLoader(ISceneLoader* externalLoader) = 0;
1410 
1412  virtual u32 getSceneLoaderCount() const = 0;
1413 
1415 
1418  virtual ISceneLoader* getSceneLoader(u32 index) const = 0;
1419 
1421 
1424 
1426 
1428  virtual IMeshManipulator* getMeshManipulator() = 0;
1429 
1431 
1439  virtual void addToDeletionQueue(ISceneNode* node) = 0;
1440 
1442 
1444  virtual bool postEventFromUser(const SEvent& event) = 0;
1445 
1447 
1448  virtual void clear() = 0;
1449 
1451 
1453  virtual io::IAttributes* getParameters() = 0;
1454 
1456 
1463 
1465 
1468 
1470 
1472  virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;
1473 
1475  virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;
1476 
1478 
1480  virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;
1481 
1483 
1486 
1488 
1490  virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory* factoryToAdd) = 0;
1491 
1493  virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const = 0;
1494 
1496 
1499 
1501  virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;
1502 
1504  virtual const c8* getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type) = 0;
1505 
1507 
1509  virtual ISceneNode* addSceneNode(const char* sceneNodeTypeName, ISceneNode* parent=0) = 0;
1510 
1512 
1516  virtual ISceneNodeAnimator* createSceneNodeAnimator(const char* typeName, ISceneNode* target=0) = 0;
1517 
1519 
1537  virtual ISceneManager* createNewSceneManager(bool cloneContent=false) = 0;
1538 
1540 
1555  virtual bool saveScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1556 
1558 
1573  virtual bool saveScene(io::IWriteFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1574 
1576 
1593  virtual bool saveScene(io::IXMLWriter* writer, const io::path& currentPath, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
1594 
1596 
1612  virtual bool loadScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
1613 
1615 
1631  virtual bool loadScene(io::IReadFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
1632 
1634 
1636  virtual IMeshWriter* createMeshWriter(EMESH_WRITER_TYPE type) = 0;
1637 
1639 
1641  virtual ISkinnedMesh* createSkinnedMesh() = 0;
1642 
1644  virtual void setAmbientLight(const video::SColorf &ambientColor) = 0;
1645 
1647  virtual const video::SColorf& getAmbientLight() const = 0;
1648 
1650 
1652  virtual void setLightManager(ILightManager* lightManager) = 0;
1653 
1656 
1658  virtual void setCurrentRenderPass(E_SCENE_NODE_RENDER_PASS nextPass) =0;
1659 
1661 
1663  virtual const IGeometryCreator* getGeometryCreator(void) const = 0;
1664 
1666 
1674  virtual bool isCulled(const ISceneNode* node) const =0;
1675  };
1676 
1677 
1678 } // end namespace scene
1679 } // end namespace irr
1680 
1681 #endif
1682 
Interface for dynamic creation of scene nodes.
virtual ISceneNode * getSceneNodeFromName(const c8 *name, ISceneNode *start=0)=0
Get the first scene node with the specified name.
virtual ISceneNodeFactory * getDefaultSceneNodeFactory()=0
Get the default scene node factory which can create all built in scene nodes.
The FileSystem manages files and archives and provides access to them.
Definition: IFileSystem.h:32
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...
Interface to return triangles with specific properties.
virtual const c8 * getSceneNodeTypeName(ESCENE_NODE_TYPE type)=0
Get typename from a scene node type or null if not found.
_IRR_DEPRECATED_ ITriangleSelector * createOctTreeTriangleSelector(IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)
//! Creates a Triangle Selector, optimized by an octree.
Scene Node which is a (controllable) camera.
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
Interface for dynamic creation of scene node animators.
Provides a generic interface for attributes and their values and the possibility to serialize them.
Definition: IAttributes.h:41
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 ...
#define _IRR_DEPRECATED_
Defines a deprecated macro which generates a warning at compile time.
Definition: irrTypes.h:202
Struct storing which key belongs to which action.
Definition: SKeyMap.h:31
virtual void drawAll()=0
Draws all the scene nodes.
SEvents hold information about an event. See irr::IEventReceiver for details on event handling.
Transparent effect scene nodes, drawn after Transparent nodes. They are sorted from back to front and...
Definition: ISceneManager.h:92
Interface providing read access to a file.
Definition: IReadFile.h:18
virtual void addExternalSceneLoader(ISceneLoader *externalLoader)=0
Adds an external scene loader for extending the engine with new file formats.
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 u32 getSceneLoaderCount() const =0
Returns the number of scene loaders supported by Irrlicht at this time.
Camera pass. The active view is set up here. The very first pass.
Definition: ISceneManager.h:62
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 ISceneNodeAnimator * createSceneNodeAnimator(const char *typeName, ISceneNode *target=0)=0
creates a scene node animator based on its type name
float f32
32 bit floating point variable.
Definition: irrTypes.h:108
virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const =0
Get amount of registered scene node animator factories.
A scene node displaying a static mesh.
virtual bool postEventFromUser(const SEvent &event)=0
Posts an input event to the environment.
virtual void clearAllRegisteredNodesForRendering()=0
Clear all nodes which are currently registered for rendering.
virtual IAnimatedMesh * getMesh(const io::path &filename, const io::path &alternativeCacheName=io::path(""))=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
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 void clear()=0
Clears the whole scene.
virtual ITriangleSelector * createTriangleSelectorFromBoundingBox(ISceneNode *node)=0
Creates a simple dynamic ITriangleSelector, based on a axis aligned bounding box.
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.
virtual bool saveScene(const io::path &filename, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
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 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.
char c8
8 bit character variable.
Definition: irrTypes.h:35
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.
Scene node interface.
Definition: ISceneNode.h:40
virtual ISceneManager * createNewSceneManager(bool cloneContent=false)=0
Creates a new scene manager.
All normal objects can use this for registering themselves.
Definition: ISceneManager.h:83
Dummy scene node for adding additional transformations to the scene graph.
virtual void addExternalMeshLoader(IMeshLoader *externalLoader)=0
Adds an external mesh loader for extending the engine with new file formats.
virtual video::IVideoDriver * getVideoDriver()=0
Get the video driver.
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 void setLightManager(ILightManager *lightManager)=0
Register a custom callbacks manager which gets callbacks during scene rendering.
virtual ISceneNodeAnimator * createDeleteAnimator(u32 timeMs)=0
Creates a scene node animator, which deletes the scene node after some time automatically.
ILightManager provides an interface for user applications to manipulate the list of lights in the sce...
Definition: ILightManager.h:25
Animates a scene node. Can animate position, rotation, material, and so on.
virtual IMeshManipulator * getMeshManipulator()=0
Get pointer to the mesh manipulator.
Scene node which is a dynamic light.
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...
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
ESCENE_NODE_ANIMATOR_TYPE
An enumeration for all types of built-in scene node animators.
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.
GUI Environment. Used as factory and manager of all other GUI elements.
virtual io::IAttributes * getParameters()=0
Get interface to the parameters set in this scene.
Interface providing write access to a file.
Definition: IWriteFile.h:17
Specifies a 2 dimensional size.
Definition: dimension2d.h:20
virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type, core::array< scene::ISceneNode * > &outNodes, ISceneNode *start=0)=0
Get scene nodes by type.
Interface for software image data.
Definition: IImage.h:25
Interface for writing meshes.
Definition: IMeshWriter.h:23
virtual IMeshCache * getMeshCache()=0
Get interface to the mesh cache which is shared between all existing scene managers.
A scene node for displaying 2d text at a position in three dimensional space.
Class which holds the geometry of an object.
Definition: IMesh.h:71
virtual IOctreeSceneNode * 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.
Interface for using some special functions of Skinned meshes.
Definition: ISkinnedMesh.h:32
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 const video::SColorf & getAmbientLight() const =0
Get ambient color of the scene.
virtual u32 registerNodeForRendering(ISceneNode *node, E_SCENE_NODE_RENDER_PASS pass=ESNRP_AUTOMATIC)=0
Registers a node for rendering it at a specific time.
No pass currently active.
Definition: ISceneManager.h:59
patch size of 17, at most, use 5 levels of detail with this patch size.
virtual gui::IGUIEnvironment * getGUIEnvironment()=0
Get the active GUIEnvironment.
virtual u32 getMeshLoaderCount() const =0
Returns the number of mesh loaders supported by Irrlicht at this time.
In this pass, lights are transformed into camera space and added to the driver.
Definition: ISceneManager.h:65
Interface for making multiple triangle selectors work as one big selector.
Font interface.
Definition: IGUIFont.h:39
virtual ICameraSceneNode * getActiveCamera() const =0
Get the current active camera.
E_TERRAIN_PATCH_SIZE
enumeration for patch sizes specifying the size of patches in the TerrainSceneNode
Helper class for creating geometry on the fly.
virtual IMeshWriter * createMeshWriter(EMESH_WRITER_TYPE type)=0
Get a mesh writer implementation if available.
virtual void addToDeletionQueue(ISceneNode *node)=0
Adds a scene node to the deletion queue.
signed int s32
32 bit signed variable.
Definition: irrTypes.h:70
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:39
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 void setCurrentRenderPass(E_SCENE_NODE_RENDER_PASS nextPass)=0
Set current render pass.
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.
Scene node capable of displaying an animated mesh and its shadow.
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 ITriangleSelector * createTerrainTriangleSelector(ITerrainSceneNode *node, s32 LOD=0)=0
Creates a triangle selector which can select triangles from a terrain scene node.
EMESH_WRITER_TYPE
An enumeration for all supported types of built-in mesh writers.
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.
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:62
virtual ISkinnedMesh * createSkinnedMesh()=0
Get a skinned mesh, which is not available as header-only code.
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 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 const IGeometryCreator * getGeometryCreator(void) const =0
Get an instance of a geometry creator.
virtual ISceneNode * addSceneNode(const char *sceneNodeTypeName, ISceneNode *parent=0)=0
Adds a scene node to the scene by name.
Drawn after the solid nodes, before the transparent nodes, the time for drawing shadow volumes.
Definition: ISceneManager.h:95
virtual video::SColor getShadowColor() const =0
Get the current color of shadows.
Solid scene nodes or special scene nodes without materials.
Definition: ISceneManager.h:86
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.
Header file containing all scene parameters for modifying mesh loading etc.
virtual void setAmbientLight(const video::SColorf &ambientColor)=0
Sets ambient color of the scene.
Interface to driver which is able to perform 2d and 3d graphics functions.
Definition: IVideoDriver.h:151
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.
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
Special scene node animator for doing automatic collision detection and response.
Class which is able to load an animated mesh from a file.
Definition: IMeshLoader.h:27
Class representing a 32 bit ARGB color.
Definition: SColor.h:314
Class which can load a scene into the scene manager.
Definition: ISceneLoader.h:26
A scene node for displaying terrain using the geo mip map algorithm.
virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory *factoryToAdd)=0
Adds a scene node animator factory to the scene manager.
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 ITriangleSelector * createOctreeTriangleSelector(IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)=0
Creates a Triangle Selector, optimized by an octree.
The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff.
Interface providing methods for making it easier to write XML files.
Definition: irrXML.h:377
virtual ISceneNodeAnimatorFactory * getSceneNodeAnimatorFactory(u32 index)=0
Get scene node animator factory by index.
Self reallocating template array (like stl vector) with additional features.
Definition: irrArray.h:22
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.
E_SCENE_NODE_RENDER_PASS
Enumeration for render passes.
Definition: ISceneManager.h:56
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const =0
Get current render pass.
virtual ISceneNodeAnimator * createRotationAnimator(const core::vector3df &rotationSpeed)=0
Creates a rotation animator, which rotates the attached scene node around itself.
A Parsed Shader Holding Variables ordered in Groups.
Definition: IQ3Shader.h:636
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 ISceneNodeAnimatorFactory * getDefaultSceneNodeAnimatorFactory()=0
Get the default scene node animator factory which can create all built-in scene node animators.
virtual IMetaTriangleSelector * createMetaTriangleSelector()=0
Creates a meta triangle selector.
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 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 void registerSceneNodeFactory(ISceneNodeFactory *factoryToAdd)=0
Adds a scene node factory to the scene manager.
virtual IDummyTransformationSceneNode * addDummyTransformationSceneNode(ISceneNode *parent=0, s32 id=-1)=0
Adds a dummy transformation scene node to the scene graph.
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 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 ISceneCollisionManager * getSceneCollisionManager()=0
Get pointer to the scene collision manager.
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:153
Base class of most objects of the Irrlicht Engine.
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 ISceneNode * getRootSceneNode()=0
Gets the root scene node.
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 E_SCENE_NODE_RENDER_PASS getCurrentRenderPass() const =0
Get current render pass.
This is used for sky boxes.
Definition: ISceneManager.h:68
Interface for an animated mesh.
Definition: IAnimatedMesh.h:20
virtual ISceneLoader * getSceneLoader(u32 index) const =0
Retrieve the given scene loader.
An interface for easy manipulation of meshes.
virtual ISceneNode * addEmptySceneNode(ISceneNode *parent=0, s32 id=-1)=0
Adds an empty scene node to the scene graph.
The mesh cache stores already loaded meshes and provides an interface to them.
Definition: IMeshCache.h:27
Interface to read and write user data to and from .irr files.
virtual io::IFileSystem * getFileSystem()=0
Get the active FileSystem.
virtual u32 getRegisteredSceneNodeFactoryCount() const =0
Get amount of registered scene node factories.
virtual ITriangleSelector * createTriangleSelector(IMesh *mesh, ISceneNode *node, bool separateMeshbuffers=false)=0
Creates a simple ITriangleSelector, based on a mesh.
The Scene Collision Manager provides methods for performing collision tests and picking on scene node...
virtual bool isCulled(const ISceneNode *node) const =0
Check if node is culled in current view frustum.
virtual IMeshLoader * getMeshLoader(u32 index) const =0
Retrieve the given mesh loader.
virtual ISceneNode * getSceneNodeFromId(s32 id, ISceneNode *start=0)=0
Get the first scene node with the specified id.
Class representing a color with four floats.
Definition: SColor.h:571
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:286
Transparent scene nodes, drawn after solid nodes. They are sorted from back to front and drawn in tha...
Definition: ISceneManager.h:89
virtual void setActiveCamera(ICameraSceneNode *camera)=0
Sets the currently active camera.
virtual ISceneNodeFactory * getSceneNodeFactory(u32 index)=0
Get a scene node factory by index.
A scene node displaying a static mesh.
virtual ISceneNode * getSceneNodeFromType(scene::ESCENE_NODE_TYPE type, ISceneNode *start=0)=0
Get the first scene node with the specified type.