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_MESH_SCENE_NODE_H_INCLUDED__ 6 #define __I_MESH_SCENE_NODE_H_INCLUDED__ 7 8 #include "ISceneNode.h" 9 10 namespace irr 11 { 12 namespace scene 13 { 14 15 class IShadowVolumeSceneNode; 16 class IMesh; 17 18 19 //! A scene node displaying a static mesh 20 class IMeshSceneNode : public ISceneNode 21 { 22 public: 23 24 //! Constructor 25 /** Use setMesh() to set the mesh to display. 26 */ 27 IMeshSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id, 28 const core::vector3df& position = core::vector3df(0,0,0), 29 const core::vector3df& rotation = core::vector3df(0,0,0), 30 const core::vector3df& scale = core::vector3df(1,1,1)) ISceneNode(parent,mgr,id,position,rotation,scale)31 : ISceneNode(parent, mgr, id, position, rotation, scale) {} 32 33 //! Sets a new mesh to display 34 /** \param mesh Mesh to display. */ 35 virtual void setMesh(IMesh* mesh) = 0; 36 37 //! Get the currently defined mesh for display. 38 /** \return Pointer to mesh which is displayed by this node. */ 39 virtual IMesh* getMesh(void) = 0; 40 41 //! Sets if the scene node should not copy the materials of the mesh but use them in a read only style. 42 /** In this way it is possible to change the materials of a mesh 43 causing all mesh scene nodes referencing this mesh to change, too. 44 \param readonly Flag if the materials shall be read-only. */ 45 virtual void setReadOnlyMaterials(bool readonly) = 0; 46 47 //! Check if the scene node should not copy the materials of the mesh but use them in a read only style 48 /** This flag can be set by setReadOnlyMaterials(). 49 \return Whether the materials are read-only. */ 50 virtual bool isReadOnlyMaterials() const = 0; 51 }; 52 53 } // end namespace scene 54 } // end namespace irr 55 56 57 #endif 58 59