5#ifndef DCPP_I_SCENE_MANAGER_HPP_INCLUDED
6#define DCPP_I_SCENE_MANAGER_HPP_INCLUDED
8#include <duckcpp/core/engine/IReferenceCounted.hpp>
9#include <duckcpp/core/engine/irrArray.hpp>
10#include <duckcpp/core/engine/irrString.hpp>
11#include <duckcpp/core/engine/path.hpp>
12#include <duckcpp/core/engine/vector3d.hpp>
13#include <duckcpp/core/engine/dimension2d.hpp>
14#include <duckcpp/core/engine/SColor.hpp>
15#include <duckcpp/core/engine/ETerrainElements.hpp>
16#include <duckcpp/core/engine/ESceneNodeTypes.hpp>
17#include <duckcpp/core/engine/ESceneNodeAnimatorTypes.hpp>
18#include <duckcpp/core/engine/EMeshWriterEnums.hpp>
19#include <duckcpp/core/engine/SceneParameters.hpp>
20#include <duckcpp/core/engine/IGeometryCreator.hpp>
21#include <duckcpp/core/engine/ISkinnedMesh.hpp>
22#include <duckcpp/core/engine/IXMLWriter.hpp>
40 class IGUIEnvironment;
105 class IAnimatedMeshSceneNode;
106 class IBillboardSceneNode;
107 class IBillboardTextSceneNode;
108 class ICameraSceneNode;
109 class IDummyTransformationSceneNode;
111 class ILightSceneNode;
116 class IMeshManipulator;
117 class IMeshSceneNode;
119 class IMetaTriangleSelector;
120 class IOctreeSceneNode;
121 class IParticleSystemSceneNode;
122 class ISceneCollisionManager;
125 class ISceneNodeAnimator;
126 class ISceneNodeAnimatorCollisionResponse;
127 class ISceneNodeAnimatorFactory;
128 class ISceneNodeFactory;
129 class ISceneUserDataSerializer;
130 class IShadowVolumeSceneNode;
131 class ITerrainSceneNode;
132 class ITextSceneNode;
133 class ITriangleSelector;
134 class IVolumeLightSceneNode;
503 bool alsoAddIfMeshPointerZero=
false) = 0;
520 bool alsoAddIfMeshPointerZero=
false) = 0;
691 bool makeActive=
true) = 0;
860 bool addAlsoIfHeightmapEmpty =
false) = 0;
898 bool addAlsoIfHeightmapEmpty =
false) = 0;
Base class of most objects of the Duckcpp Engine.
Definition IReferenceCounted.hpp:46
SEvents hold information about an event. See dcpp::IEventReceiver for details on event handling.
Definition IEventReceiver.hpp:282
Class storing which key belongs to which action.
Definition SKeyMap.hpp:32
GUI Environment. Used as factory and manager of all other GUI elements.
Definition IGUIEnvironment.hpp:73
Font interface.
Definition IGUIFont.hpp:40
Provides a generic interface for attributes and their values and the possibility to serialize them.
Definition IAttributes.hpp:42
The FileSystem manages files and archives and provides access to them.
Definition IFileSystem.hpp:33
Interface providing methods for making it easier to write XML files.
Definition irrXML.hpp:377
Interface providing read access to a file.
Definition IReadFile.hpp:19
Interface providing write access to a file.
Definition IWriteFile.hpp:18
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.hpp:22
Specifies a 2 dimensional size.
Definition dimension2d.hpp:21
3d vector template class with lots of operators and methods.
Definition vector3d.hpp:32
Scene node capable of displaying an animated mesh.
Definition IAnimatedMeshSceneNode.hpp:52
Interface for an animated mesh.
Definition IAnimatedMesh.hpp:21
A billboard scene node.
Definition IBillboardSceneNode.hpp:23
A billboard text scene node.
Definition IBillboardTextSceneNode.hpp:28
Scene Node which is a (controllable) camera.
Definition ICameraSceneNode.hpp:24
Helper class for creating geometry on the fly.
Definition IGeometryCreator.hpp:55
ILightManager provides an interface for user applications to manipulate the list of lights in the sce...
Definition ILightManager.hpp:30
Scene node which is a dynamic light.
Definition ILightSceneNode.hpp:23
Class for holding a mesh with a single material.
Definition IMeshBuffer.hpp:41
The mesh cache stores already loaded meshes and provides an interface to them.
Definition IMeshCache.hpp:28
Class which is able to load an animated mesh from a file.
Definition IMeshLoader.hpp:29
An interface for easy manipulation of meshes.
Definition IMeshManipulator.hpp:30
A scene node displaying a static mesh.
Definition IMeshSceneNode.hpp:21
Interface for writing meshes.
Definition IMeshWriter.hpp:24
Class which holds the geometry of an object.
Definition IMesh.hpp:72
A scene node displaying a static mesh.
Definition IOctreeSceneNode.hpp:54
Definition IParticleSystemSceneNode.hpp:72
The Scene Collision Manager provides methods for performing collision tests and picking on scene node...
Definition ISceneCollisionManager.hpp:52
Class which can load a scene into the scene manager.
Definition ISceneLoader.hpp:27
The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff.
Definition ISceneManager.hpp:160
virtual IAnimatedMesh * getMesh(const dcpp::io::path &filename, const dcpp::io::path &alternativeCacheName=dcpp::io::path(""))=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
virtual IDummyTransformationSceneNode * addDummyTransformationSceneNode(ISceneNode *parent=0, dcpp::int32_kt id=-1)=0
Adds a dummy transformation scene node to the scene graph.
virtual const dcpp::video::SColorf & getAmbientLight() const =0
Get ambient color of the scene.
virtual IAnimatedMesh * addTerrainMesh(const dcpp::io::path &meshname, dcpp::video::IImage *texture, dcpp::video::IImage *heightmap, const dcpp::nub::dimension2df &stretchSize=dcpp::nub::dimension2df(10.0f, 10.0f), dcpp::float32_kt maxHeight=200.0f, const dcpp::nub::dimension2du &defaultVertexBlockSize=dcpp::nub::dimension2du(64, 64))=0
Adds a static terrain mesh to the mesh pool.
virtual ISceneNodeAnimator * createFlyCircleAnimator(const dcpp::nub::vector3df ¢er=dcpp::nub::vector3df(0.f, 0.f, 0.f), dcpp::float32_kt radius=100.f, dcpp::float32_kt speed=0.001f, const dcpp::nub::vector3df &direction=dcpp::nub::vector3df(0.f, 1.f, 0.f), dcpp::float32_kt startPosition=0.f, dcpp::float32_kt radiusEllipsoid=0.f)=0
Creates a fly circle animator, which lets the attached scene node fly around a center.
virtual dcpp::gui::IGUIEnvironment * getGUIEnvironment()=0
Get the active GUIEnvironment.
virtual ISceneNodeAnimator * createDeleteAnimator(dcpp::uint32_kt timeMs)=0
Creates a scene node animator, which deletes the scene node after some time automatically.
virtual ISceneNode * getRootSceneNode()=0
Gets the root scene node.
virtual ISceneLoader * getSceneLoader(dcpp::uint32_kt index) const =0
Retrieve the given scene loader.
virtual ITextSceneNode * addTextSceneNode(dcpp::gui::IGUIFont *font, const wchar_t *text, dcpp::video::SColor color=dcpp::video::SColor(100, 255, 255, 255), ISceneNode *parent=0, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), dcpp::int32_kt id=-1)=0
Adds a text scene node, which is able to display 2d text at a position in three dimensional space.
virtual ISceneNode * getSceneNodeFromName(const dcpp::char_kt *name, ISceneNode *start=0)=0
Get the first scene node with the specified name.
virtual IOctreeSceneNode * addOctreeSceneNode(IAnimatedMesh *mesh, ISceneNode *parent=0, dcpp::int32_kt id=-1, dcpp::int32_kt minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering using a octree to the scene graph.
virtual void drawAll()=0
Draws all the scene nodes.
virtual ITriangleSelector * createOctreeTriangleSelector(IMesh *mesh, ISceneNode *node, dcpp::int32_kt minimalPolysPerNode=32)=0
Creates a Triangle Selector, optimized by an octree.
virtual ISceneNode * getSceneNodeFromId(dcpp::int32_kt id, ISceneNode *start=0)=0
Get the first scene node with the specified id.
virtual IOctreeSceneNode * addOctreeSceneNode(IMesh *mesh, ISceneNode *parent=0, dcpp::int32_kt id=-1, dcpp::int32_kt minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering using a octree to the scene graph.
virtual ITerrainSceneNode * addTerrainSceneNode(const dcpp::io::path &heightMapFileName, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0.0f, 0.0f, 0.0f), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0.0f, 0.0f, 0.0f), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f), dcpp::video::SColor vertexColor=dcpp::video::SColor(255, 255, 255, 255), dcpp::int32_kt maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, dcpp::int32_kt smoothFactor=0, bool addAlsoIfHeightmapEmpty=false)=0
Adds a terrain scene node to the scene graph.
virtual IShadowVolumeSceneNode * createShadowVolumeSceneNode(const IMesh *shadowMesh, ISceneNode *parent, dcpp::int32_kt id, bool zfailmethod, dcpp::float32_kt infinity)=0
Create a shadow volume scene node to be used with custom nodes.
virtual IMeshCache * getMeshCache()=0
Get interface to the mesh cache which is shared between all existing scene managers.
virtual IAnimatedMesh * addArrowMesh(const dcpp::io::path &name, dcpp::video::SColor vtxColorCylinder=0xFFFFFFFF, dcpp::video::SColor vtxColorCone=0xFFFFFFFF, dcpp::uint32_kt tesselationCylinder=4, dcpp::uint32_kt tesselationCone=8, dcpp::float32_kt height=1.f, dcpp::float32_kt cylinderHeight=0.6f, dcpp::float32_kt widthCylinder=0.05f, dcpp::float32_kt widthCone=0.3f)=0
add a static arrow mesh to the meshpool
virtual IParticleSystemSceneNode * addParticleSystemSceneNode(bool withDefaultEmitter=true, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f))=0
Adds a particle system scene node to the scene graph.
virtual IAnimatedMesh * addHillPlaneMesh(const dcpp::io::path &name, const dcpp::nub::dimension2df &tileSize, const dcpp::nub::dimension2du &tileCount, dcpp::video::SMaterial *material=0, dcpp::float32_kt hillHeight=0.0f, const dcpp::nub::dimension2df &countHills=dcpp::nub::dimension2df(0.0f, 0.0f), const dcpp::nub::dimension2df &textureRepeatCount=dcpp::nub::dimension2df(1.0f, 1.0f))=0
Adds a Hill Plane mesh to the mesh pool.
virtual ISceneNodeFactory * getDefaultSceneNodeFactory()=0
Get the default scene node factory which can create all built in scene nodes.
virtual dcpp::io::IAttributes * getParameters()=0
Get interface to the parameters set in this scene.
virtual void addToDeletionQueue(ISceneNode *node)=0
Adds a scene node to the deletion queue.
virtual IMeshSceneNode * addSphereSceneNode(dcpp::float32_kt radius=5.0f, dcpp::int32_kt polyCount=16, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f))=0
Adds a sphere scene node of the given radius and detail.
virtual IMeshSceneNode * addCubeSceneNode(dcpp::float32_kt size=10.0f, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f), ECUBE_MESH_TYPE type=ECMT_1BUF_12VTX_NA)=0
Adds a cube scene node.
virtual ICameraSceneNode * addCameraSceneNode(ISceneNode *parent=0, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &lookat=dcpp::nub::vector3df(0, 0, 100), dcpp::int32_kt id=-1, bool makeActive=true)=0
Adds a camera scene node to the scene graph and sets it as active camera.
virtual IMetaTriangleSelector * createMetaTriangleSelector()=0
Creates a meta triangle selector.
virtual ITriangleSelector * createTriangleSelector(IAnimatedMeshSceneNode *node, bool separateMeshBuffers=false)=0
Creates a simple ITriangleSelector, based on an animated mesh scene node.
virtual void addExternalSceneLoader(ISceneLoader *externalLoader)=0
Adds an external scene loader for extending the engine with new file formats.
virtual ITriangleSelector * createTriangleSelector(IMesh *mesh, ISceneNode *node, bool separateMeshBuffers=false)=0
Creates a simple ITriangleSelector, based on a mesh.
virtual IBillboardTextSceneNode * addBillboardTextSceneNode(dcpp::gui::IGUIFont *font, const wchar_t *text, ISceneNode *parent=0, const dcpp::nub::dimension2df &size=dcpp::nub::dimension2df(10.0f, 10.0f), const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), dcpp::int32_kt id=-1, dcpp::video::SColor colorTop=0xFFFFFFFF, dcpp::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 dcpp::uint32_kt getRegisteredSceneNodeAnimatorFactoryCount() const =0
Get amount of registered scene node animator factories.
virtual ISceneNode * addEmptySceneNode(ISceneNode *parent=0, dcpp::int32_kt id=-1)=0
Adds an empty scene node to the scene graph.
virtual ICameraSceneNode * addCameraSceneNodeFPS(ISceneNode *parent=0, dcpp::float32_kt rotateSpeed=100.0f, dcpp::float32_kt moveSpeed=0.5f, dcpp::int32_kt id=-1, SKeyMap *keyMapArray=0, dcpp::int32_kt keyMapSize=0, bool noVerticalMovement=false, dcpp::float32_kt 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 ISceneNodeFactory * getSceneNodeFactory(dcpp::uint32_kt index)=0
Get a scene node factory by index.
virtual const dcpp::char_kt * getSceneNodeTypeName(ESCENE_NODE_TYPE type)=0
Get typename from a scene node type or null if not found.
virtual ISceneNode * addWaterSurfaceSceneNode(IMesh *mesh, dcpp::float32_kt waveHeight=2.0f, dcpp::float32_kt waveSpeed=300.0f, dcpp::float32_kt waveLength=10.0f, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f))=0
Adds a scene node for rendering a animated water surface mesh.
virtual const IGeometryCreator * getGeometryCreator(void) const =0
Get an instance of a geometry creator.
virtual IMeshWriter * createMeshWriter(EMESH_WRITER_TYPE type)=0
Get a mesh writer implementation if available.
virtual dcpp::uint32_kt getSceneLoaderCount() const =0
Returns the number of scene loaders supported by Duckcpp at this time.
virtual ISceneNodeAnimatorFactory * getSceneNodeAnimatorFactory(dcpp::uint32_kt index)=0
Get scene node animator factory by index.
virtual void setActiveCamera(ICameraSceneNode *camera)=0
Sets the currently active camera.
virtual void setLightManager(ILightManager *lightManager)=0
Register a custom callbacks manager which gets callbacks during scene rendering.
virtual IAnimatedMeshSceneNode * addAnimatedMeshSceneNode(IAnimatedMesh *mesh, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f), bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering an animated mesh model.
virtual ISceneCollisionManager * getSceneCollisionManager()=0
Get pointer to the scene collision manager.
virtual bool isCulled(const ISceneNode *node) const =0
Check if node is culled in current view frustum.
virtual IVolumeLightSceneNode * addVolumeLightSceneNode(ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::uint32_kt subdivU=32, const dcpp::uint32_kt subdivV=32, const dcpp::video::SColor foot=dcpp::video::SColor(51, 0, 230, 180), const dcpp::video::SColor tail=dcpp::video::SColor(0, 0, 0, 0), const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f))=0
adds Volume Lighting Scene Node.
virtual IMeshSceneNode * addMeshSceneNode(IMesh *mesh, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0, 0, 0), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f), bool alsoAddIfMeshPointerZero=false)=0
Adds a scene node for rendering a static mesh.
virtual void addExternalMeshLoader(IMeshLoader *externalLoader)=0
Adds an external mesh loader for extending the engine with new file formats.
virtual IBillboardSceneNode * addBillboardSceneNode(ISceneNode *parent=0, const dcpp::nub::dimension2df &size=dcpp::nub::dimension2df(10.0f, 10.0f), const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), dcpp::int32_kt id=-1, dcpp::video::SColor colorTop=0xFFFFFFFF, dcpp::video::SColor colorBottom=0xFFFFFFFF)=0
Adds a billboard 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.
DCPP_DEPRECATED ITriangleSelector * createOctTreeTriangleSelector(IMesh *mesh, ISceneNode *node, dcpp::int32_kt minimalPolysPerNode=32)
//! Creates a Triangle Selector, optimized by an octree.
Definition ISceneManager.hpp:1377
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 ISceneNode * addSkyBoxSceneNode(dcpp::video::ITexture *top, dcpp::video::ITexture *bottom, dcpp::video::ITexture *left, dcpp::video::ITexture *right, dcpp::video::ITexture *front, dcpp::video::ITexture *back, ISceneNode *parent=0, dcpp::int32_kt id=-1)=0
Adds a skybox scene node to the scene graph.
virtual dcpp::uint32_kt getMeshLoaderCount() const =0
Returns the number of mesh loaders supported by Duckcpp at this time.
virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory *factoryToAdd)=0
Adds a scene node animator factory to the scene manager.
virtual bool saveScene(dcpp::io::IWriteFile *file, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual ITriangleSelector * createTerrainTriangleSelector(ITerrainSceneNode *node, dcpp::int32_kt LOD=0)=0
Creates a triangle selector which can select triangles from a terrain scene node.
virtual ISceneNodeAnimator * createSceneNodeAnimator(const char *typeName, ISceneNode *target=0)=0
creates a scene node animator based on its type name
virtual dcpp::uint32_kt getRegisteredSceneNodeFactoryCount() const =0
Get amount of registered scene node factories.
virtual ISceneNodeAnimator * createFollowSplineAnimator(dcpp::int32_kt startTime, const dcpp::nub::array< dcpp::nub::vector3df > &points, dcpp::float32_kt speed=1.0f, dcpp::float32_kt tightness=0.5f, bool loop=true, bool pingpong=false, bool steer=false)=0
Creates a follow spline animator.
virtual ITriangleSelector * createTriangleSelector(const IMeshBuffer *meshBuffer, dcpp::uint32_kt materialIndex, ISceneNode *node)=0
Creates a simple ITriangleSelector, based on a meshbuffer.
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 ISceneNodeAnimatorFactory * getDefaultSceneNodeAnimatorFactory()=0
Get the default scene node animator factory which can create all built-in scene node animators.
virtual IMeshLoader * getMeshLoader(dcpp::uint32_kt index) const =0
Retrieve the given mesh loader.
virtual bool saveScene(dcpp::io::IXMLWriter *writer, const dcpp::io::path ¤tPath, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual ISkinnedMesh * createSkinnedMesh()=0
Get a skinned mesh, which is not available as header-only code.
virtual dcpp::io::IFileSystem * getFileSystem()=0
Get the active FileSystem.
virtual ISceneNodeAnimator * createTextureAnimator(const dcpp::nub::array< dcpp::video::ITexture * > &textures, dcpp::int32_kt 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 E_SCENE_NODE_RENDER_PASS getCurrentRenderPass() const =0
Get current render pass.
virtual ITerrainSceneNode * addTerrainSceneNode(dcpp::io::IReadFile *heightMapFile, ISceneNode *parent=0, dcpp::int32_kt id=-1, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0.0f, 0.0f, 0.0f), const dcpp::nub::vector3df &rotation=dcpp::nub::vector3df(0.0f, 0.0f, 0.0f), const dcpp::nub::vector3df &scale=dcpp::nub::vector3df(1.0f, 1.0f, 1.0f), dcpp::video::SColor vertexColor=dcpp::video::SColor(255, 255, 255, 255), dcpp::int32_kt maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, dcpp::int32_kt smoothFactor=0, bool addAlsoIfHeightmapEmpty=false)=0
Adds a terrain scene node to the scene graph.
virtual ISceneNodeAnimator * createFlyStraightAnimator(const dcpp::nub::vector3df &startPoint, const dcpp::nub::vector3df &endPoint, dcpp::uint32_kt 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 setCurrentRenderPass(E_SCENE_NODE_RENDER_PASS nextPass)=0
Set current render pass.
virtual ITriangleSelector * createOctreeTriangleSelector(IMeshBuffer *meshBuffer, dcpp::uint32_kt materialIndex, ISceneNode *node, dcpp::int32_kt minimalPolysPerNode=32)=0
Creates a Triangle Selector for a single meshbuffer, optimized by an octree.
virtual dcpp::video::SColor getShadowColor() const =0
Get the current color of shadows.
virtual ILightSceneNode * addLightSceneNode(ISceneNode *parent=0, const dcpp::nub::vector3df &position=dcpp::nub::vector3df(0, 0, 0), dcpp::video::SColorf color=dcpp::video::SColorf(1.0f, 1.0f, 1.0f), dcpp::float32_kt radius=100.0f, dcpp::int32_kt id=-1)=0
Adds a dynamic light scene node to the scene graph.
virtual ISceneNodeAnimatorCollisionResponse * createCollisionResponseAnimator(ITriangleSelector *world, ISceneNode *sceneNode, const dcpp::nub::vector3df &ellipsoidRadius=dcpp::nub::vector3df(30, 60, 30), const dcpp::nub::vector3df &gravityPerSecond=dcpp::nub::vector3df(0,-10.0f, 0), const dcpp::nub::vector3df &ellipsoidTranslation=dcpp::nub::vector3df(0, 0, 0), dcpp::float32_kt slidingValue=0.0005f)=0
Creates a special scene node animator for doing automatic collision detection and response.
virtual ISceneNode * getSceneNodeFromType(dcpp::scene::ESCENE_NODE_TYPE type, ISceneNode *start=0)=0
Get the first scene node with the specified type.
virtual void setAmbientLight(const dcpp::video::SColorf &ambientColor)=0
Sets ambient color of the scene.
virtual ITriangleSelector * createTriangleSelectorFromBoundingBox(ISceneNode *node)=0
Creates a simple dynamic ITriangleSelector, based on a axis aligned bounding box.
virtual void setShadowColor(dcpp::video::SColor color=dcpp::video::SColor(150, 0, 0, 0))=0
Sets the color of stencil buffers shadows drawn by the scene manager.
virtual ISceneNode * addSkyDomeSceneNode(dcpp::video::ITexture *texture, dcpp::uint32_kt horiRes=16, dcpp::uint32_kt vertRes=8, dcpp::float32_kt texturePercentage=0.9, dcpp::float32_kt spherePercentage=2.0, dcpp::float32_kt radius=1000.f, ISceneNode *parent=0, dcpp::int32_kt id=-1)=0
Adds a skydome scene node to the scene graph.
virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type, dcpp::nub::array< dcpp::scene::ISceneNode * > &outNodes, ISceneNode *start=0)=0
Get scene nodes by type.
virtual dcpp::video::IVideoDriver * getVideoDriver()=0
Get the video driver.
virtual IAnimatedMesh * getMesh(dcpp::io::IReadFile *file)=0
Get pointer to an animateable mesh. Loads the file if not loaded already.
virtual bool loadScene(dcpp::io::IReadFile *file, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *rootNode=0)=0
Loads a scene. Note that the current scene is not cleared before.
virtual IAnimatedMesh * addSphereMesh(const dcpp::io::path &name, dcpp::float32_kt radius=5.f, dcpp::uint32_kt polyCountX=16, dcpp::uint32_kt polyCountY=16)=0
add a static sphere mesh to the meshpool
virtual IMeshSceneNode * addQuake3SceneNode(const IMeshBuffer *meshBuffer, const quake3::IShader *shader, ISceneNode *parent=0, dcpp::int32_kt id=-1)=0
Adds a quake3 scene node to the scene graph.
virtual IAnimatedMesh * addVolumeLightMesh(const dcpp::io::path &name, const dcpp::uint32_kt SubdivideU=32, const dcpp::uint32_kt SubdivideV=32, const dcpp::video::SColor FootColor=dcpp::video::SColor(51, 0, 230, 180), const dcpp::video::SColor TailColor=dcpp::video::SColor(0, 0, 0, 0))=0
Add a volume light mesh to the meshpool.
virtual dcpp::uint32_kt registerNodeForRendering(ISceneNode *node, E_SCENE_NODE_RENDER_PASS pass=ESNRP_AUTOMATIC)=0
Registers a node for rendering it at a specific time.
virtual ICameraSceneNode * addCameraSceneNodeMaya(ISceneNode *parent=0, dcpp::float32_kt rotateSpeed=-1500.f, dcpp::float32_kt zoomSpeed=200.f, dcpp::float32_kt translationSpeed=1500.f, dcpp::int32_kt id=-1, dcpp::float32_kt distance=70.f, bool makeActive=true, dcpp::float32_kt rotX=0.f, dcpp::float32_kt rotY=0.f)=0
Adds a maya style user controlled camera scene node to the scene graph.
virtual void clear()=0
Clears the whole scene.
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const =0
Get current render pass.
virtual bool loadScene(const dcpp::io::path &filename, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *rootNode=0)=0
Loads a scene. Note that the current scene is not cleared before.
virtual ISceneNodeAnimator * createRotationAnimator(const dcpp::nub::vector3df &rotationSpeed)=0
Creates a rotation animator, which rotates the attached scene node around itself.
virtual ISceneManager * createNewSceneManager(bool cloneContent=false)=0
Creates a new scene manager.
virtual bool saveScene(const dcpp::io::path &filename, ISceneUserDataSerializer *userDataSerializer=0, ISceneNode *node=0)=0
Saves the current scene into a file.
virtual IMeshManipulator * getMeshManipulator()=0
Get pointer to the mesh manipulator.
virtual const dcpp::char_kt * getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type)=0
Returns a typename from a scene node animator type or null if not found.
Special scene node animator for doing automatic collision detection and response.
Definition ISceneNodeAnimatorCollisionResponse.hpp:54
Interface for dynamic creation of scene node animators.
Definition ISceneNodeAnimatorFactory.hpp:28
Animates a scene node. Can animate position, rotation, material, and so on.
Definition ISceneNodeAnimator.hpp:32
Interface for dynamic creation of scene nodes.
Definition ISceneNodeFactory.hpp:28
Scene node interface.
Definition ISceneNode.hpp:43
Interface to read and write user data to and from .irr files.
Definition ISceneUserDataSerializer.hpp:25
Scene node for rendering a shadow volume into a stencil buffer.
Definition IShadowVolumeSceneNode.hpp:34
Interface for using some special functions of Skinned meshes.
Definition ISkinnedMesh.hpp:33
A scene node for displaying terrain using the geo mip map algorithm.
Definition ITerrainSceneNode.hpp:50
A scene node for displaying 2d text at a position in three dimensional space.
Definition ITextSceneNode.hpp:23
Interface to return triangles with specific properties.
Definition ITriangleSelector.hpp:74
Definition IVolumeLightSceneNode.hpp:19
A Parsed Shader Holding Variables ordered in Groups.
Definition IQ3Shader.hpp:652
Interface for software image data.
Definition IImage.hpp:26
Interface of a Video Driver dependent Texture.
Definition ITexture.hpp:186
Interface to driver which is able to perform 2d and 3d graphics functions.
Definition IVideoDriver.hpp:152
Class representing a 32 bit ARGB color.
Definition SColor.hpp:317
Class representing a color with four floats.
Definition SColor.hpp:574
Class for holding parameters for a material renderer.
Definition SMaterial.hpp:304
ECUBE_MESH_TYPE
Definition IGeometryCreator.hpp:24
@ ECMT_1BUF_12VTX_NA
Definition IGeometryCreator.hpp:29
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
Definition ESceneNodeTypes.hpp:20
ESCENE_NODE_ANIMATOR_TYPE
An enumeration for all types of built-in scene node animators.
Definition ESceneNodeAnimatorTypes.hpp:15
E_TERRAIN_PATCH_SIZE
enumeration for patch sizes specifying the size of patches in the TerrainSceneNode
Definition ETerrainElements.hpp:15
@ ETPS_17
patch size of 17, at most, use 5 levels of detail with this patch size.
Definition ETerrainElements.hpp:20
E_SCENE_NODE_RENDER_PASS
Enumeration for render passes.
Definition ISceneManager.hpp:59
@ ESNRP_CAMERA
Camera pass. The active view is set up here. The very first pass.
Definition ISceneManager.hpp:64
@ ESNRP_SOLID
Solid scene nodes or special scene nodes without materials.
Definition ISceneManager.hpp:88
@ ESNRP_TRANSPARENT
Transparent scene nodes, drawn after solid nodes. They are sorted from back to front and drawn in tha...
Definition ISceneManager.hpp:91
@ ESNRP_NONE
No pass currently active.
Definition ISceneManager.hpp:61
@ ESNRP_SHADOW
Drawn after the solid nodes, before the transparent nodes, the time for drawing shadow volumes.
Definition ISceneManager.hpp:97
@ ESNRP_LIGHT
In this pass, lights are transformed into camera space and added to the driver.
Definition ISceneManager.hpp:67
@ ESNRP_AUTOMATIC
All normal objects can use this for registering themselves.
Definition ISceneManager.hpp:85
@ ESNRP_GUI
Drawn after transparent effect nodes. For custom gui's. Unsorted (in order nodes registered themselve...
Definition ISceneManager.hpp:100
@ ESNRP_SKY_BOX
This is used for sky boxes.
Definition ISceneManager.hpp:70
@ ESNRP_TRANSPARENT_EFFECT
Transparent effect scene nodes, drawn after Transparent nodes. They are sorted from back to front and...
Definition ISceneManager.hpp:94
EMESH_WRITER_TYPE
An enumeration for all supported types of built-in mesh writers.
Definition EMeshWriterEnums.hpp:20
As of Duckcpp 1.6, position2d is a synonym for vector2d.
Definition shared_device.hpp:34
char char_kt
8 bit character variable.
Definition irrTypes.hpp:37
unsigned int uint32_kt
32 bit unsigned variable.
Definition irrTypes.hpp:64
float float32_kt
32 bit floating point variable.
Definition irrTypes.hpp:108
signed int int32_kt
32 bit signed variable.
Definition irrTypes.hpp:72