5#ifndef NIRT_T_MESH_BUFFER_HPP_INCLUDED
6#define NIRT_T_MESH_BUFFER_HPP_INCLUDED
8#include <nirtcpp/core/engine/irrArray.hpp>
9#include <nirtcpp/core/engine/IMeshBuffer.hpp>
22 : ChangedID_Vertex(1), ChangedID_Index(1)
75 return video::EIT_16BIT;
127 for (
u32 i=1; i<vsize; ++i)
196 virtual void append(
const void*
const vertices,
u32 numVertices,
const u16*
const indices,
u32 numIndices)
override
204 Vertices.reallocate(vertexCount+numVertices);
205 for (i=0; i<numVertices; ++i)
207 Vertices.push_back(
static_cast<const T*
>(vertices)[i]);
212 for (i=0; i<numIndices; ++i)
259 return MappingHint_Index;
268 MappingHint_Index=NewMappingHint;
311 if (cloneFlags & ECF_VERTICES)
325 clone->MappingHint_Index = MappingHint_Index;
335 u32 ChangedID_Vertex;
void setDebugName(const c8 *newName)
Sets the debug name of the object.
Definition IReferenceCounted.hpp:163
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.hpp:22
void addInternalPoint(const vector3d< T > &p)
Adds a point to the bounding box.
Definition aabbox3d.hpp:74
void reset(T x, T y, T z)
Resets the bounding box to a one-point box.
Definition aabbox3d.hpp:50
u32 size() const
Get number of occupied elements of the array.
Definition irrArray.hpp:397
void push_back(const T &element)
Adds an element at back of array.
Definition irrArray.hpp:111
void reallocate(u32 new_size, bool canShrink=true)
Reallocates the array, make it bigger or smaller.
Definition irrArray.hpp:66
const T * const_pointer() const
Gets a const pointer to the array.
Definition irrArray.hpp:389
T * pointer()
Gets a pointer to the array.
Definition irrArray.hpp:381
Template implementation of the IMeshBuffer interface for 16-bit buffers.
Definition CMeshBuffer.hpp:18
virtual video::SMaterial & getMaterial() override
Get material of this meshbuffer.
Definition CMeshBuffer.hpp:42
virtual u32 getVertexCount() const override
Get number of vertices.
Definition CMeshBuffer.hpp:66
video::SMaterial Material
Material for this meshbuffer.
Definition CMeshBuffer.hpp:343
virtual const video::SMaterial & getMaterial() const override
Get material of this meshbuffer.
Definition CMeshBuffer.hpp:34
virtual video::E_VERTEX_TYPE getVertexType() const override
Get type of vertex data stored in this buffer.
Definition CMeshBuffer.hpp:138
virtual const core::aabbox3d< f32 > & getBoundingBox() const override
Get the axis aligned bounding box.
Definition CMeshBuffer.hpp:104
virtual void setBoundingBox(const core::aabbox3df &box) override
Set the axis aligned bounding box.
Definition CMeshBuffer.hpp:113
virtual core::vector3df & getPosition(u32 i) override
returns position of vertex i
Definition CMeshBuffer.hpp:150
virtual u32 getIndexCount() const override
Get number of indices.
Definition CMeshBuffer.hpp:96
virtual const core::vector2df & getTCoords(u32 i) const override
returns texture coord of vertex i
Definition CMeshBuffer.hpp:168
core::aabbox3d< f32 > BoundingBox
Bounding box of this meshbuffer.
Definition CMeshBuffer.hpp:349
virtual u32 getChangedID_Index() const override
Get the currently used ID for identification of changes.
Definition CMeshBuffer.hpp:298
virtual const void * getVertices() const override
Get pointer to vertices.
Definition CMeshBuffer.hpp:50
virtual video::SColor & getColor(u32 i) override
returns color of vertex i
Definition CMeshBuffer.hpp:180
virtual video::E_INDEX_TYPE getIndexType() const override
Get type of index data which is stored in this meshbuffer.
Definition CMeshBuffer.hpp:73
virtual void append(const IMeshBuffer *const other) override
Append the meshbuffer to the current buffer.
Definition CMeshBuffer.hpp:225
CMeshBuffer()
Default constructor for empty meshbuffer.
Definition CMeshBuffer.hpp:21
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const override
get the current hardware mapping hint
Definition CMeshBuffer.hpp:257
E_HARDWARE_MAPPING MappingHint_Vertex
hardware mapping hint
Definition CMeshBuffer.hpp:339
virtual core::vector2df & getTCoords(u32 i) override
returns texture coord of vertex i
Definition CMeshBuffer.hpp:174
virtual u32 getChangedID_Vertex() const override
Get the currently used ID for identification of changes.
Definition CMeshBuffer.hpp:294
virtual void * getVertices() override
Get pointer to vertices.
Definition CMeshBuffer.hpp:58
virtual u16 * getIndices() override
Get pointer to indices.
Definition CMeshBuffer.hpp:88
virtual void recalculateBoundingBox() override
Recalculate the bounding box.
Definition CMeshBuffer.hpp:121
virtual core::vector3df & getNormal(u32 i) override
returns normal of vertex i
Definition CMeshBuffer.hpp:162
virtual IMeshBuffer * createClone(int cloneFlags) const override
Create copy of the meshbuffer.
Definition CMeshBuffer.hpp:307
virtual const core::vector3df & getPosition(u32 i) const override
returns position of vertex i
Definition CMeshBuffer.hpp:144
virtual const u16 * getIndices() const override
Get pointer to indices.
Definition CMeshBuffer.hpp:80
virtual EMESH_BUFFER_TYPE getType() const override
Returns type of the class implementing the IMeshBuffer.
Definition CMeshBuffer.hpp:301
E_PRIMITIVE_TYPE PrimitiveType
Primitive type used for rendering (triangles, lines, ...)
Definition CMeshBuffer.hpp:351
EMESH_BUFFER_TYPE getTypeT() const
Returns type of the class implementing the IMeshBuffer for template specialization.
core::array< T > Vertices
Vertices of this buffer.
Definition CMeshBuffer.hpp:345
core::array< u16 > Indices
Indices into the vertices of this buffer.
Definition CMeshBuffer.hpp:347
virtual E_PRIMITIVE_TYPE getPrimitiveType() const override
Get the kind of primitive geometry which is used by the meshbuffer.
Definition CMeshBuffer.hpp:278
virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) override
Describe what kind of primitive geometry is used by the meshbuffer.
Definition CMeshBuffer.hpp:272
virtual const core::vector3df & getNormal(u32 i) const override
returns normal of vertex i
Definition CMeshBuffer.hpp:156
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override
get the current hardware mapping hint
Definition CMeshBuffer.hpp:251
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) override
set the hardware mapping hint, for driver
Definition CMeshBuffer.hpp:263
virtual const video::SColor & getColor(u32 i) const override
returns color of vertex i
Definition CMeshBuffer.hpp:186
virtual void append(const void *const vertices, u32 numVertices, const u16 *const indices, u32 numIndices) override
Append the vertices and indices to the current buffer.
Definition CMeshBuffer.hpp:196
virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) override
flags the mesh as changed, reloads hardware buffers
Definition CMeshBuffer.hpp:284
Class for holding a mesh with a single material.
Definition IMeshBuffer.hpp:41
@ ECF_INDICES
clone the vertices (or copy pointer for SSharedMeshBuffer)
Definition IMeshBuffer.hpp:205
Class representing a 32 bit ARGB color.
Definition SColor.hpp:317
Class for holding parameters for a material renderer.
Definition SMaterial.hpp:304
E_BUFFER_TYPE
Definition EHardwareBufferFlags.hpp:29
@ EBT_VERTEX_AND_INDEX
Change both vertex and index mapping to the same value.
Definition EHardwareBufferFlags.hpp:37
@ EBT_INDEX
Change the index mapping.
Definition EHardwareBufferFlags.hpp:35
@ EBT_VERTEX
Change the vertex mapping.
Definition EHardwareBufferFlags.hpp:33
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
Definition EPrimitiveTypes.hpp:15
@ EPT_TRIANGLES
Explicitly set all vertices for each triangle.
Definition EPrimitiveTypes.hpp:37
E_HARDWARE_MAPPING
Definition EHardwareBufferFlags.hpp:14
@ EHM_NEVER
Don't store on the hardware.
Definition EHardwareBufferFlags.hpp:16
EMESH_BUFFER_TYPE
An enumeration for all types of built-in mesh buffers.
Definition EMeshBufferTypes.hpp:18
@ EMBT_LIGHTMAP
SMeshBufferLightMap (16 bit buffers)
Definition EMeshBufferTypes.hpp:23
@ EMBT_TANGENTS
SMeshBufferTangents (16 bit buffers)
Definition EMeshBufferTypes.hpp:26
@ EMBT_STANDARD
SMeshBuffer (16 bit buffers)
Definition EMeshBufferTypes.hpp:20
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition S3DVertex.hpp:19
As of Nirtcpp 1.6, position2d is a synonym for vector2d.
Definition vector3d.hpp:11
unsigned short u16
16 bit unsigned variable.
Definition irrTypes.hpp:46
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.hpp:64