Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials
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 
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 
419  virtual video::IVideoDriver* getVideoDriver() = 0;
420 
422 
425 
427 
429  virtual io::IFileSystem* getFileSystem() = 0;
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 
561  virtual IMeshSceneNode* addOctreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
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 
585  virtual IMeshSceneNode* addOctreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
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 
613  virtual ICameraSceneNode* addCameraSceneNode(ISceneNode* parent = 0,
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 
723  virtual ILightSceneNode* addLightSceneNode(ISceneNode* parent = 0,
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 
961  virtual IBillboardTextSceneNode* addBillboardTextSceneNode( gui::IGUIFont* font, const wchar_t* text,
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 
994  virtual IAnimatedMesh* addHillPlaneMesh(const io::path& name,
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 
1068  virtual IAnimatedMesh* addVolumeLightMesh(const io::path& name,
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 
1080  virtual ISceneNode* getRootSceneNode() = 0;
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 
1118  virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type,
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 
1148  virtual u32 registerNodeForRendering(ISceneNode* node,
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 
1221  virtual ISceneNodeAnimator* createDeleteAnimator(u32 timeMs) = 0;
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 
1293  virtual ITriangleSelector* createTriangleSelector(IMesh* mesh, ISceneNode* node) = 0;
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 
1412  virtual IMeshManipulator* getMeshManipulator() = 0;
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 
1440  virtual io::IAttributes* getParameters() = 0;
1441 
1443 
1450 
1452 
1455 
1457 
1459  virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;
1460 
1462  virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;
1463 
1465 
1467  virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;
1468 
1470 
1473 
1475 
1477  virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory* factoryToAdd) = 0;
1478 
1480  virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const = 0;
1481 
1483 
1486 
1488  virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;
1489 
1491  virtual const c8* getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type) = 0;
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 
1623  virtual IMeshWriter* createMeshWriter(EMESH_WRITER_TYPE type) = 0;
1624 
1626 
1628  virtual ISkinnedMesh* createSkinnedMesh() = 0;
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 
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.
Interface providing methods for making it easier to write XML files.
Definition: IXMLWriter.h:20
_IRR_DEPRECATED_ ITriangleSelector * createOctTreeTriangleSelector(IMesh *mesh, ISceneNode *node, s32 minimalPolysPerNode=32)
//! Creates a Triangle Selector, optimized by an octree.
Scene Node which is a (controlable) 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 possiblity 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:195
Struct storing which key belongs to which action.
Definition: SKeyMap.h:29
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:91
Interface providing read acess to a file.
Definition: IReadFile.h:17
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:61
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:104
virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const =0
Get amount of registered scene node animator factories.
virtual bool postEventFromUser(const SEvent &event)=0
Posts an input event to the environment.
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.
virtual IAnimatedMesh * getMesh(const io::path &filename)=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
char c8
8 bit character variable.
Definition: irrTypes.h:31
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:82
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...
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:22
Interface for writing meshes.
Definition: IMeshWriter.h:23
virtual IMeshCache * getMeshCache()=0
Get interface to the mesh cache which is shared beween 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:23
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.
_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 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:58
A particle system scene node for creating snow, fire, exlosions, smoke...
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:64
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.
virtual ITriangleSelector * createTriangleSelector(IMesh *mesh, ISceneNode *node)=0
Creates a simple ITriangleSelector, based on a mesh.
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
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 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:58
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:94
virtual video::SColor getShadowColor() const =0
Get the current color of shadows.
Solid scene nodes or special scene nodes without materials.
Definition: ISceneManager.h:85
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:256
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:26
Class representing a 32 bit ARGB color.
Definition: SColor.h:201
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 recources, cameras and all the other stuff.
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:55
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:638
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 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 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:98
Base class of most objects of the Irrlicht Engine.
_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 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.
This is used for sky boxes.
Definition: ISceneManager.h:67
Interface for an animated mesh.
Definition: IAnimatedMesh.h:62
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.
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:458
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226
Transparent scene nodes, drawn after solid nodes. They are sorted from back to front and drawn in tha...
Definition: ISceneManager.h:88
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.

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Fri Dec 20 2013 11:17:01 by Doxygen (1.8.5)