#include "vector3d.h"\r
#include "dimension2d.h"\r
#include "SColor.h"\r
-#include "ETerrainElements.h"\r
#include "ESceneNodeTypes.h"\r
#include "EMeshWriterEnums.h"\r
#include "SceneParameters.h"\r
class IMesh;\r
class IMeshBuffer;\r
class IMeshCache;\r
+ class ISceneCollisionManager;\r
class IMeshLoader;\r
class IMeshManipulator;\r
class IMeshSceneNode;\r
class IMeshWriter;\r
- class ISceneLoader;\r
class ISceneNode;\r
class ISceneNodeFactory;\r
- class ISceneUserDataSerializer;\r
\r
//! The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff.\r
/** All Scene nodes can be created only here.\r
\return A pointer to the specified loader, 0 if the index is incorrect. */\r
virtual IMeshLoader* getMeshLoader(u32 index) const = 0;\r
\r
- //! Adds an external scene loader for extending the engine with new file formats.\r
- /** If you want the engine to be extended with\r
- file formats it currently is not able to load (e.g. .vrml), just implement\r
- the ISceneLoader interface in your loading class and add it with this method.\r
- Using this method it is also possible to override the built-in scene loaders\r
- with newer or updated versions without the need to recompile the engine.\r
- \param externalLoader: Implementation of a new mesh loader. */\r
- virtual void addExternalSceneLoader(ISceneLoader* externalLoader) = 0;\r
-\r
- //! Returns the number of scene loaders supported by Irrlicht at this time\r
- virtual u32 getSceneLoaderCount() const = 0;\r
-\r
- //! Retrieve the given scene loader\r
- /** \param index The index of the loader to retrieve. This parameter is an 0-based\r
- array index.\r
- \return A pointer to the specified loader, 0 if the index is incorrect. */\r
- virtual ISceneLoader* getSceneLoader(u32 index) const = 0;\r
+ //! Get pointer to the scene collision manager.\r
+ /** \return Pointer to the collision manager\r
+ This pointer should not be dropped. See IReferenceCounted::drop() for more information. */\r
+ virtual ISceneCollisionManager* getSceneCollisionManager() = 0;\r
\r
//! Get pointer to the mesh manipulator.\r
/** \return Pointer to the mesh manipulator\r
pass currently is active they can render the correct part of their geometry. */\r
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const = 0;\r
\r
- //! Get the default scene node factory which can create all built in scene nodes\r
- /** \return Pointer to the default scene node factory\r
- This pointer should not be dropped. See IReferenceCounted::drop() for more information. */\r
- virtual ISceneNodeFactory* getDefaultSceneNodeFactory() = 0;\r
-\r
- //! Adds a scene node factory to the scene manager.\r
- /** Use this to extend the scene manager with new scene node types which it should be\r
- able to create automatically, for example when loading data from xml files. */\r
- virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;\r
-\r
- //! Get amount of registered scene node factories.\r
- virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;\r
-\r
- //! Get a scene node factory by index\r
- /** \return Pointer to the requested scene node factory, or 0 if it does not exist.\r
- This pointer should not be dropped. See IReferenceCounted::drop() for more information. */\r
- virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;\r
-\r
- //! Get typename from a scene node type or null if not found\r
- virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;\r
-\r
- //! Adds a scene node to the scene by name\r
- /** \return Pointer to the scene node added by a factory\r
- This pointer should not be dropped. See IReferenceCounted::drop() for more information. */\r
- virtual ISceneNode* addSceneNode(const char* sceneNodeTypeName, ISceneNode* parent=0) = 0;\r
-\r
//! Creates a new scene manager.\r
/** This can be used to easily draw and/or store two\r
independent scenes at the same time. The mesh cache will be\r
See IReferenceCounted::drop() for more information. */\r
virtual ISceneManager* createNewSceneManager(bool cloneContent=false) = 0;\r
\r
- //! Saves the current scene into a file.\r
- /** Scene nodes with the option isDebugObject set to true are\r
- not being saved. The scene is usually written to an .irr file,\r
- an xml based format. .irr files can Be edited with the Irrlicht\r
- Engine Editor, irrEdit (http://www.ambiera.com/irredit/). To\r
- load .irr files again, see ISceneManager::loadScene().\r
- \param filename Name of the file.\r
- \param userDataSerializer If you want to save some user data\r
- for every scene node into the file, implement the\r
- ISceneUserDataSerializer interface and provide it as parameter\r
- here. Otherwise, simply specify 0 as this parameter.\r
- \param node Node which is taken as the top node of the scene.\r
- This node and all of its descendants are saved into the scene\r
- file. Pass 0 or the scene manager to save the full scene (which\r
- is also the default).\r
- \return True if successful. */\r
- virtual bool saveScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;\r
-\r
- //! Saves the current scene into a file.\r
- /** Scene nodes with the option isDebugObject set to true are\r
- not being saved. The scene is usually written to an .irr file,\r
- an xml based format. .irr files can Be edited with the Irrlicht\r
- Engine Editor, irrEdit (http://www.ambiera.com/irredit/). To\r
- load .irr files again, see ISceneManager::loadScene().\r
- \param file File where the scene is saved into.\r
- \param userDataSerializer If you want to save some user data\r
- for every scene node into the file, implement the\r
- ISceneUserDataSerializer interface and provide it as parameter\r
- here. Otherwise, simply specify 0 as this parameter.\r
- \param node Node which is taken as the top node of the scene.\r
- This node and all of its descendants are saved into the scene\r
- file. Pass 0 or the scene manager to save the full scene (which\r
- is also the default).\r
- \return True if successful. */\r
- virtual bool saveScene(io::IWriteFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;\r
-\r
- //! Loads a scene. Note that the current scene is not cleared before.\r
- /** The scene is usually loaded from an .irr file, an xml based\r
- format, but other scene formats can be added to the engine via\r
- ISceneManager::addExternalSceneLoader. .irr files can Be edited\r
- with the Irrlicht Engine Editor, irrEdit\r
- (http://www.ambiera.com/irredit/) or saved directly by the engine\r
- using ISceneManager::saveScene().\r
- \param filename Name of the file to load from.\r
- \param userDataSerializer If you want to load user data\r
- possibily saved in that file for some scene nodes in the file,\r
- implement the ISceneUserDataSerializer interface and provide it\r
- as parameter here. Otherwise, simply specify 0 as this\r
- parameter.\r
- \param rootNode Node which is taken as the root node of the\r
- scene. Pass 0 to add the scene directly to the scene manager\r
- (which is also the default).\r
- \return True if successful. */\r
- virtual bool loadScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;\r
-\r
- //! Loads a scene. Note that the current scene is not cleared before.\r
- /** The scene is usually loaded from an .irr file, an xml based\r
- format, but other scene formats can be added to the engine via\r
- ISceneManager::addExternalSceneLoader. .irr files can Be edited\r
- with the Irrlicht Engine Editor, irrEdit\r
- (http://www.ambiera.com/irredit/) or saved directly by the engine\r
- using ISceneManager::saveScene().\r
- \param file File where the scene is loaded from.\r
- \param userDataSerializer If you want to load user data\r
- saved in that file for some scene nodes in the file,\r
- implement the ISceneUserDataSerializer interface and provide it\r
- as parameter here. Otherwise, simply specify 0 as this\r
- parameter.\r
- \param rootNode Node which is taken as the root node of the\r
- scene. Pass 0 to add the scene directly to the scene manager\r
- (which is also the default).\r
- \return True if successful. */\r
- virtual bool loadScene(io::IReadFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;\r
-\r
//! Get a mesh writer implementation if available\r
/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop()\r
for details. */\r