aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h')
-rw-r--r--src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h b/src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h
new file mode 100644
index 0000000..72f2036
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/include/IDynamicMeshBuffer.h
@@ -0,0 +1,211 @@
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
12namespace irr
13{
14namespace scene
15{
16
17 /** a dynamic meshBuffer */
18 class IDynamicMeshBuffer : public IMeshBuffer
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
27 //! Get the material of this meshbuffer
28 /** \return Material of this buffer. */
29 virtual video::SMaterial& getMaterial() =0;
30
31 //! Get the material of this meshbuffer
32 /** \return Material of this buffer. */
33 virtual const video::SMaterial& getMaterial() const =0;
34
35 //! Get the axis aligned bounding box of this meshbuffer.
36 /** \return Axis aligned bounding box of this buffer. */
37 virtual const core::aabbox3df& getBoundingBox() const =0;
38
39 //! Set axis aligned bounding box
40 /** \param box User defined axis aligned bounding box to use
41 for this buffer. */
42 virtual void setBoundingBox(const core::aabbox3df& box) =0;
43
44 //! Recalculates the bounding box. Should be called if the mesh changed.
45 virtual void recalculateBoundingBox() =0;
46
47 //! Append the vertices and indices to the current buffer
48 /** Only works for compatible vertex types.
49 \param vertices Pointer to a vertex array.
50 \param numVertices Number of vertices in the array.
51 \param indices Pointer to index array.
52 \param numIndices Number of indices in array. */
53 virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices)
54 {
55
56 }
57
58 //! Append the meshbuffer to the current buffer
59 /** Only works for compatible vertex types
60 \param other Buffer to append to this one. */
61 virtual void append(const IMeshBuffer* const other)
62 {
63
64 }
65
66 // ------------------- To be removed? ------------------- //
67
68 //! get the current hardware mapping hint
69 virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const
70 {
71 return getVertexBuffer().getHardwareMappingHint();
72 }
73
74 //! get the current hardware mapping hint
75 virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const
76 {
77 return getIndexBuffer().getHardwareMappingHint();
78 }
79
80 //! set the hardware mapping hint, for driver
81 virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX )
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
89 //! flags the mesh as changed, reloads hardware buffers
90 virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX)
91 {
92 if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
93 getVertexBuffer().setDirty();
94 if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
95 getIndexBuffer().setDirty();
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
110 //! Get type of vertex data which is stored in this meshbuffer.
111 /** \return Vertex type of this buffer. */
112 virtual video::E_VERTEX_TYPE getVertexType() const
113 {
114 return getVertexBuffer().getType();
115 }
116
117 //! Get access to vertex data. The data is an array of vertices.
118 /** Which vertex type is used can be determined by getVertexType().
119 \return Pointer to array of vertices. */
120 virtual const void* getVertices() const
121 {
122 return getVertexBuffer().getData();
123 }
124
125 //! Get access to vertex data. The data is an array of vertices.
126 /** Which vertex type is used can be determined by getVertexType().
127 \return Pointer to array of vertices. */
128 virtual void* getVertices()
129 {
130 return getVertexBuffer().getData();
131 }
132
133 //! Get amount of vertices in meshbuffer.
134 /** \return Number of vertices in this buffer. */
135 virtual u32 getVertexCount() const
136 {
137 return getVertexBuffer().size();
138 }
139
140 //! Get type of index data which is stored in this meshbuffer.
141 /** \return Index type of this buffer. */
142 virtual video::E_INDEX_TYPE getIndexType() const
143 {
144 return getIndexBuffer().getType();
145 }
146
147 //! Get access to Indices.
148 /** \return Pointer to indices array. */
149 virtual const u16* getIndices() const
150 {
151 return (u16*)getIndexBuffer().getData();
152 }
153
154 //! Get access to Indices.
155 /** \return Pointer to indices array. */
156 virtual u16* getIndices()
157 {
158 return (u16*)getIndexBuffer().getData();
159 }
160
161 //! Get amount of indices in this meshbuffer.
162 /** \return Number of indices in this buffer. */
163 virtual u32 getIndexCount() const
164 {
165 return getIndexBuffer().size();
166 }
167
168 //! returns position of vertex i
169 virtual const core::vector3df& getPosition(u32 i) const
170 {
171 return getVertexBuffer()[i].Pos;
172 }
173
174 //! returns position of vertex i
175 virtual core::vector3df& getPosition(u32 i)
176 {
177 return getVertexBuffer()[i].Pos;
178 }
179
180 //! returns texture coords of vertex i
181 virtual const core::vector2df& getTCoords(u32 i) const
182 {
183 return getVertexBuffer()[i].TCoords;
184 }
185
186 //! returns texture coords of vertex i
187 virtual core::vector2df& getTCoords(u32 i)
188 {
189 return getVertexBuffer()[i].TCoords;
190 }
191
192 //! returns normal of vertex i
193 virtual const core::vector3df& getNormal(u32 i) const
194 {
195 return getVertexBuffer()[i].Normal;
196 }
197
198 //! returns normal of vertex i
199 virtual core::vector3df& getNormal(u32 i)
200 {
201 return getVertexBuffer()[i].Normal;
202 }
203 };
204
205
206} // end namespace scene
207} // end namespace irr
208
209#endif
210
211