Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

# IDynamicMeshBuffer.h

Go to the documentation of this file.

    00001 // Copyright (C) 2008-2009 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_DYNAMIC_MESH_BUFFER_H_INCLUDED__
    00006 #define __I_DYNAMIC_MESH_BUFFER_H_INCLUDED__
    00007
    00008 #include "IMeshBuffer.h"
    00009 #include "IVertexBuffer.h"
    00010 #include "IIndexBuffer.h"
    00011
    00012 namespace irr
    00013 {
    00014 namespace scene
    00015 {
    00016
    00018         class IDynamicMeshBuffer : public IMeshBuffer
    00019         {
    00020         public:
    00021                 virtual IVertexBuffer &getVertexBuffer() const =0;
    00022                 virtual IIndexBuffer &getIndexBuffer() const =0;
    00023
    00024                 virtual void setVertexBuffer(IVertexBuffer *vertexBuffer) =0;
    00025                 virtual void setIndexBuffer(IIndexBuffer *indexBuffer) =0;
    00026
    00028
    00029                 virtual video::SMaterial& getMaterial() =0;
    00030
    00032
    00033                 virtual const video::SMaterial& getMaterial() const =0;
    00034
    00036
    00037                 virtual const core::aabbox3df& getBoundingBox() const =0;
    00038
    00040
    00042                 virtual void setBoundingBox(const core::aabbox3df& box) =0;
    00043
    00045                 virtual void recalculateBoundingBox() =0;
    00046
    00048
    00053                 virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices)
    00054                 {
    00055
    00056                 }
    00057
    00059
    00061                 virtual void append(const IMeshBuffer* const other)
    00062                 {
    00063
    00064                 }
    00065
    00066                 // ------------------- To be removed? -------------------  //
    00067
    00069                 virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const
    00070                 {
    00071                         return getVertexBuffer().getHardwareMappingHint();
    00072                 }
    00073
    00075                 virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const
    00076                 {
    00077                         return getIndexBuffer().getHardwareMappingHint();
    00078                 }
    00079
    00081                 virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX )
    00082                 {
    00083                         if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
    00084                                 getVertexBuffer().setHardwareMappingHint(NewMappingHint);
    00085                         if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
    00086                                 getIndexBuffer().setHardwareMappingHint(NewMappingHint);
    00087                 }
    00088
    00090                 virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX)
    00091                 {
    00092                         if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
    00093                                 getVertexBuffer().setDirty();
    00094                         if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
    00095                                 getIndexBuffer().setDirty();
    00096                 }
    00097
    00098                 virtual u32 getChangedID_Vertex() const
    00099                 {
    00100                         return getVertexBuffer().getChangedID();
    00101                 }
    00102
    00103                 virtual u32 getChangedID_Index() const
    00104                 {
    00105                         return getIndexBuffer().getChangedID();
    00106                 }
    00107
    00108                 // ------------------- Old interface -------------------  //
    00109
    00111
    00112                 virtual video::E_VERTEX_TYPE getVertexType() const
    00113                 {
    00114                         return getVertexBuffer().getType();
    00115                 }
    00116
    00118
    00120                 virtual const void* getVertices() const
    00121                 {
    00122                         return getVertexBuffer().getData();
    00123                 }
    00124
    00126
    00128                 virtual void* getVertices()
    00129                 {
    00130                         return getVertexBuffer().getData();
    00131                 }
    00132
    00134
    00135                 virtual u32 getVertexCount() const
    00136                 {
    00137                         return getVertexBuffer().size();
    00138                 }
    00139
    00141
    00142                 virtual video::E_INDEX_TYPE getIndexType() const
    00143                 {
    00144                         return getIndexBuffer().getType();
    00145                 }
    00146
    00148
    00149                 virtual const u16* getIndices() const
    00150                 {
    00151                         return (u16*)getIndexBuffer().getData();
    00152                 }
    00153
    00155
    00156                 virtual u16* getIndices()
    00157                 {
    00158                         return (u16*)getIndexBuffer().getData();
    00159                 }
    00160
    00162
    00163                 virtual u32 getIndexCount() const
    00164                 {
    00165                         return getIndexBuffer().size();
    00166                 }
    00167
    00169                 virtual const core::vector3df& getPosition(u32 i) const
    00170                 {
    00171                         return getVertexBuffer()[i].Pos;
    00172                 }
    00173
    00175                 virtual core::vector3df& getPosition(u32 i)
    00176                 {
    00177                         return getVertexBuffer()[i].Pos;
    00178                 }
    00179
    00181                 virtual const core::vector2df& getTCoords(u32 i) const
    00182                 {
    00183                         return getVertexBuffer()[i].TCoords;
    00184                 }
    00185
    00187                 virtual core::vector2df& getTCoords(u32 i)
    00188                 {
    00189                         return getVertexBuffer()[i].TCoords;
    00190                 }
    00191
    00193                 virtual const core::vector3df& getNormal(u32 i) const
    00194                 {
    00195                         return getVertexBuffer()[i].Normal;
    00196                 }
    00197
    00199                 virtual core::vector3df& getNormal(u32 i)
    00200                 {
    00201                         return getVertexBuffer()[i].Normal;
    00202                 }
    00203         };
    00204
    00205
    00206 } // end namespace scene
    00207 } // end namespace irr
    00208
    00209 #endif
    00210
    00211

| The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Feb 14 13:06:56 2010 by Doxygen (1.6.2)