+++ /dev/null
-// Copyright (C) 2008-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_DYNAMIC_MESHBUFFER_H_INCLUDED__\r
-#define __C_DYNAMIC_MESHBUFFER_H_INCLUDED__\r
-\r
-#include "IDynamicMeshBuffer.h"\r
-\r
-#include "CVertexBuffer.h"\r
-#include "CIndexBuffer.h"\r
-\r
-namespace irr\r
-{\r
-namespace scene\r
-{\r
-\r
- class CDynamicMeshBuffer: public IDynamicMeshBuffer\r
- {\r
- public:\r
- //! constructor\r
- CDynamicMeshBuffer(video::E_VERTEX_TYPE vertexType, video::E_INDEX_TYPE indexType)\r
- : PrimitiveType(EPT_TRIANGLES)\r
- {\r
- VertexBuffer=new CVertexBuffer(vertexType);\r
- IndexBuffer=new CIndexBuffer(indexType);\r
- }\r
-\r
- //! destructor\r
- virtual ~CDynamicMeshBuffer()\r
- {\r
- if (VertexBuffer)\r
- VertexBuffer->drop();\r
- if (IndexBuffer)\r
- IndexBuffer->drop();\r
- }\r
-\r
- virtual IVertexBuffer& getVertexBuffer() const _IRR_OVERRIDE_\r
- {\r
- return *VertexBuffer;\r
- }\r
-\r
- virtual IIndexBuffer& getIndexBuffer() const _IRR_OVERRIDE_\r
- {\r
- return *IndexBuffer;\r
- }\r
-\r
- virtual void setVertexBuffer(IVertexBuffer *newVertexBuffer) _IRR_OVERRIDE_\r
- {\r
- if (newVertexBuffer)\r
- newVertexBuffer->grab();\r
- if (VertexBuffer)\r
- VertexBuffer->drop();\r
-\r
- VertexBuffer=newVertexBuffer;\r
- }\r
-\r
- virtual void setIndexBuffer(IIndexBuffer *newIndexBuffer) _IRR_OVERRIDE_\r
- {\r
- if (newIndexBuffer)\r
- newIndexBuffer->grab();\r
- if (IndexBuffer)\r
- IndexBuffer->drop();\r
-\r
- IndexBuffer=newIndexBuffer;\r
- }\r
-\r
- //! Get Material of this buffer.\r
- virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_\r
- {\r
- return Material;\r
- }\r
-\r
- //! Get Material of this buffer.\r
- virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_\r
- {\r
- return Material;\r
- }\r
-\r
- //! Get bounding box\r
- virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_\r
- {\r
- return BoundingBox;\r
- }\r
-\r
- //! Set bounding box\r
- virtual void setBoundingBox( const core::aabbox3df& box) _IRR_OVERRIDE_\r
- {\r
- BoundingBox = box;\r
- }\r
-\r
- //! Recalculate bounding box\r
- virtual void recalculateBoundingBox() _IRR_OVERRIDE_\r
- {\r
- if (!getVertexBuffer().size())\r
- BoundingBox.reset(0,0,0);\r
- else\r
- {\r
- BoundingBox.reset(getVertexBuffer()[0].Pos);\r
- for (u32 i=1; i<getVertexBuffer().size(); ++i)\r
- BoundingBox.addInternalPoint(getVertexBuffer()[i].Pos);\r
- }\r
- }\r
-\r
- //! Describe what kind of primitive geometry is used by the meshbuffer\r
- virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) _IRR_OVERRIDE_\r
- {\r
- PrimitiveType = type;\r
- }\r
-\r
- //! Get the kind of primitive geometry which is used by the meshbuffer\r
- virtual E_PRIMITIVE_TYPE getPrimitiveType() const _IRR_OVERRIDE_\r
- {\r
- return PrimitiveType;\r
- }\r
-\r
- video::SMaterial Material;\r
- core::aabbox3d<f32> BoundingBox;\r
- //! Primitive type used for rendering (triangles, lines, ...)\r
- E_PRIMITIVE_TYPE PrimitiveType;\r
- private:\r
- CDynamicMeshBuffer(const CDynamicMeshBuffer&); // = delete in c++11, prevent copying\r
-\r
- IVertexBuffer *VertexBuffer;\r
- IIndexBuffer *IndexBuffer;\r
- };\r
-\r
-\r
-} // end namespace scene\r
-} // end namespace irr\r
-\r
-#endif\r
-\r