Irrlicht 3D Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IDynamicMeshBuffer.h
Go to the documentation of this file.
1 // Copyright (C) 2008-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_DYNAMIC_MESH_BUFFER_H_INCLUDED__
6 #define __I_DYNAMIC_MESH_BUFFER_H_INCLUDED__
7 
8 #include "IMeshBuffer.h"
9 #include "IVertexBuffer.h"
10 #include "IIndexBuffer.h"
11 
12 namespace irr
13 {
14 namespace scene
15 {
16 
19  {
20  public:
21  virtual IVertexBuffer &getVertexBuffer() const =0;
22  virtual IIndexBuffer &getIndexBuffer() const =0;
23 
24  virtual void setVertexBuffer(IVertexBuffer *vertexBuffer) =0;
25  virtual void setIndexBuffer(IIndexBuffer *indexBuffer) =0;
26 
28 
29  virtual video::SMaterial& getMaterial() =0;
30 
32 
33  virtual const video::SMaterial& getMaterial() const =0;
34 
36 
37  virtual const core::aabbox3df& getBoundingBox() const =0;
38 
40 
42  virtual void setBoundingBox(const core::aabbox3df& box) =0;
43 
45  virtual void recalculateBoundingBox() =0;
46 
48 
53  virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices)
54  {
55 
56  }
57 
59 
61  virtual void append(const IMeshBuffer* const other)
62  {
63 
64  }
65 
66  // ------------------- To be removed? ------------------- //
67 
70  {
72  }
73 
76  {
78  }
79 
82  {
83  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
84  getVertexBuffer().setHardwareMappingHint(NewMappingHint);
85  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
86  getIndexBuffer().setHardwareMappingHint(NewMappingHint);
87  }
88 
91  {
92  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
94  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
96  }
97 
98  virtual u32 getChangedID_Vertex() const
99  {
100  return getVertexBuffer().getChangedID();
101  }
102 
103  virtual u32 getChangedID_Index() const
104  {
105  return getIndexBuffer().getChangedID();
106  }
107 
108  // ------------------- Old interface ------------------- //
109 
111 
113  {
114  return getVertexBuffer().getType();
115  }
116 
118 
120  virtual const void* getVertices() const
121  {
122  return getVertexBuffer().getData();
123  }
124 
126 
128  virtual void* getVertices()
129  {
130  return getVertexBuffer().getData();
131  }
132 
134 
135  virtual u32 getVertexCount() const
136  {
137  return getVertexBuffer().size();
138  }
139 
141 
143  {
144  return getIndexBuffer().getType();
145  }
146 
148 
149  virtual const u16* getIndices() const
150  {
151  return (u16*)getIndexBuffer().getData();
152  }
153 
155 
156  virtual u16* getIndices()
157  {
158  return (u16*)getIndexBuffer().getData();
159  }
160 
162 
163  virtual u32 getIndexCount() const
164  {
165  return getIndexBuffer().size();
166  }
167 
169  virtual const core::vector3df& getPosition(u32 i) const
170  {
171  return getVertexBuffer()[i].Pos;
172  }
173 
176  {
177  return getVertexBuffer()[i].Pos;
178  }
179 
181  virtual const core::vector2df& getTCoords(u32 i) const
182  {
183  return getVertexBuffer()[i].TCoords;
184  }
185 
188  {
189  return getVertexBuffer()[i].TCoords;
190  }
191 
193  virtual const core::vector3df& getNormal(u32 i) const
194  {
195  return getVertexBuffer()[i].Normal;
196  }
197 
200  {
201  return getVertexBuffer()[i].Normal;
202  }
203  };
204 
205 
206 } // end namespace scene
207 } // end namespace irr
208 
209 #endif
210 
211