Irrlicht 3D Engine
CDynamicMeshBuffer.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 __C_DYNAMIC_MESHBUFFER_H_INCLUDED__
6 #define __C_DYNAMIC_MESHBUFFER_H_INCLUDED__
7 
8 #include "IDynamicMeshBuffer.h"
9 
10 #include "CVertexBuffer.h"
11 #include "CIndexBuffer.h"
12 
13 namespace irr
14 {
15 namespace scene
16 {
17 
19  {
20  public:
23  {
24  VertexBuffer=new CVertexBuffer(vertexType);
25  IndexBuffer=new CIndexBuffer(indexType);
26  }
27 
30  {
31  if (VertexBuffer)
32  VertexBuffer->drop();
33  if (IndexBuffer)
34  IndexBuffer->drop();
35  }
36 
37  virtual IVertexBuffer& getVertexBuffer() const
38  {
39  return *VertexBuffer;
40  }
41 
42  virtual IIndexBuffer& getIndexBuffer() const
43  {
44  return *IndexBuffer;
45  }
46 
47  virtual void setVertexBuffer(IVertexBuffer *newVertexBuffer)
48  {
49  if (newVertexBuffer)
50  newVertexBuffer->grab();
51  if (VertexBuffer)
52  VertexBuffer->drop();
53 
54  VertexBuffer=newVertexBuffer;
55  }
56 
57  virtual void setIndexBuffer(IIndexBuffer *newIndexBuffer)
58  {
59  if (newIndexBuffer)
60  newIndexBuffer->grab();
61  if (IndexBuffer)
62  IndexBuffer->drop();
63 
64  IndexBuffer=newIndexBuffer;
65  }
66 
68  virtual const video::SMaterial& getMaterial() const
69  {
70  return Material;
71  }
72 
75  {
76  return Material;
77  }
78 
80  virtual const core::aabbox3d<f32>& getBoundingBox() const
81  {
82  return BoundingBox;
83  }
84 
86  virtual void setBoundingBox( const core::aabbox3df& box)
87  {
88  BoundingBox = box;
89  }
90 
92  virtual void recalculateBoundingBox()
93  {
94  if (!getVertexBuffer().size())
95  BoundingBox.reset(0,0,0);
96  else
97  {
99  for (u32 i=1; i<getVertexBuffer().size(); ++i)
101  }
102  }
103 
106  private:
107  IVertexBuffer *VertexBuffer;
108  IIndexBuffer *IndexBuffer;
109  };
110 
111 
112 } // end namespace scene
113 } // end namespace irr
114 
115 #endif
116 
bool drop() const
Drops the object. Decrements the reference counter by one.
virtual u32 size() const =0
CDynamicMeshBuffer(video::E_VERTEX_TYPE vertexType, video::E_INDEX_TYPE indexType)
constructor
virtual IIndexBuffer & getIndexBuffer() const
virtual void setIndexBuffer(IIndexBuffer *newIndexBuffer)
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
void reset(T x, T y, T z)
Resets the bounding box to a one-point box.
Definition: aabbox3d.h:50
virtual ~CDynamicMeshBuffer()
destructor
virtual void setVertexBuffer(IVertexBuffer *newVertexBuffer)
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
virtual const core::aabbox3d< f32 > & getBoundingBox() const
Get bounding box.
virtual IVertexBuffer & getVertexBuffer() const
virtual void setBoundingBox(const core::aabbox3df &box)
Set bounding box.
virtual video::SMaterial & getMaterial()
Get Material of this buffer.
void addInternalPoint(const vector3d< T > &p)
Adds a point to the bounding box.
Definition: aabbox3d.h:74
void grab() const
Grabs the object. Increments the reference counter by one.
core::aabbox3d< f32 > BoundingBox
virtual const video::SMaterial & getMaterial() const
Get Material of this buffer.
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition: S3DVertex.h:18
virtual void recalculateBoundingBox()
Recalculate bounding box.
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226