00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_MESH_H_INCLUDED__ 00006 #define __I_MESH_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "SMaterial.h" 00010 #include "EHardwareBufferFlags.h" 00011 00012 namespace irr 00013 { 00014 namespace scene 00015 { 00016 class IMeshBuffer; 00017 00019 00023 class IMesh : public virtual IReferenceCounted 00024 { 00025 public: 00026 00028 00029 virtual u32 getMeshBufferCount() const = 0; 00030 00032 00036 virtual IMeshBuffer* getMeshBuffer(u32 nr) const = 0; 00037 00039 00042 virtual IMeshBuffer* getMeshBuffer( const video::SMaterial &material) const = 0; 00043 00045 00046 virtual const core::aabbox3d<f32>& getBoundingBox() const = 0; 00047 00049 00050 virtual void setBoundingBox( const core::aabbox3df& box) = 0; 00051 00053 00055 virtual void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue) = 0; 00056 00058 00062 virtual void setHardwareMappingHint(E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) = 0; 00063 00065 00068 virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) = 0; 00069 }; 00070 00071 } // end namespace scene 00072 } // end namespace irr 00073 00074 #endif 00075