aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h')
-rw-r--r--src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h b/src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h
new file mode 100644
index 0000000..9b08f36
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/include/CDynamicMeshBuffer.h
@@ -0,0 +1,116 @@
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
13namespace irr
14{
15namespace scene
16{
17
18 class CDynamicMeshBuffer: public IDynamicMeshBuffer
19 {
20 public:
21 //! constructor
22 CDynamicMeshBuffer(video::E_VERTEX_TYPE vertexType, video::E_INDEX_TYPE indexType)
23 {
24 VertexBuffer=new CVertexBuffer(vertexType);
25 IndexBuffer=new CIndexBuffer(indexType);
26 }
27
28 //! destructor
29 virtual ~CDynamicMeshBuffer()
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
67 //! Get Material of this buffer.
68 virtual const video::SMaterial& getMaterial() const
69 {
70 return Material;
71 }
72
73 //! Get Material of this buffer.
74 virtual video::SMaterial& getMaterial()
75 {
76 return Material;
77 }
78
79 //! Get bounding box
80 virtual const core::aabbox3d<f32>& getBoundingBox() const
81 {
82 return BoundingBox;
83 }
84
85 //! Set bounding box
86 virtual void setBoundingBox( const core::aabbox3df& box)
87 {
88 BoundingBox = box;
89 }
90
91 //! Recalculate bounding box
92 virtual void recalculateBoundingBox()
93 {
94 if (!getVertexBuffer().size())
95 BoundingBox.reset(0,0,0);
96 else
97 {
98 BoundingBox.reset(getVertexBuffer()[0].Pos);
99 for (u32 i=1; i<getVertexBuffer().size(); ++i)
100 BoundingBox.addInternalPoint(getVertexBuffer()[i].Pos);
101 }
102 }
103
104 video::SMaterial Material;
105 core::aabbox3d<f32> BoundingBox;
106 private:
107 IVertexBuffer *VertexBuffer;
108 IIndexBuffer *IndexBuffer;
109 };
110
111
112} // end namespace scene
113} // end namespace irr
114
115#endif
116