~baltix/+junk/irrlicht-test

« back to all changes in this revision

Viewing changes to include/CDynamicMeshBuffer.h

  • Committer: Mantas Kriaučiūnas
  • Date: 2011-07-18 13:06:25 UTC
  • Revision ID: mantas@akl.lt-20110718130625-c5pvifp61e7kj1ol
Included whole irrlicht SVN libraries to work around launchpad recipe issue with quilt, see https://answers.launchpad.net/launchpad/+question/165193

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (C) 2008-2011 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
 
 
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