//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// #pragma once #include "BsCorePrerequisites.h" #include "BsModule.h" #include "BsMesh.h" namespace BansheeEngine { /** @addtogroup RenderAPI-Internal * @{ */ /** Manager that handles creation of Mesh%es. */ class BS_CORE_EXPORT MeshManager : public Module { public: MeshManager(); ~MeshManager(); /** @copydoc Mesh::create(UINT32, UINT32, const SPtr&, int, DrawOperationType, IndexType, const SPtr&) */ SPtr create(UINT32 numVertices, UINT32 numIndices, const SPtr& vertexDesc, int usage = MU_STATIC, DrawOperationType drawOp = DOT_TRIANGLE_LIST, IndexType indexType = IT_32BIT, const SPtr& skeleton = nullptr); /** @copydoc Mesh::create(UINT32, UINT32, const SPtr&, const Vector&, int, IndexType, const SPtr&) */ SPtr create(UINT32 numVertices, UINT32 numIndices, const SPtr& vertexDesc, const Vector& subMeshes, int usage = MU_STATIC, IndexType indexType = IT_32BIT, const SPtr& skeleton = nullptr); /** @copydoc Mesh::create(const SPtr&, int, DrawOperationType, const SPtr&) */ SPtr create(const SPtr& initialData, int usage = MU_STATIC, DrawOperationType drawOp = DOT_TRIANGLE_LIST, const SPtr& skeleton = nullptr); /** @copydoc Mesh::create(const SPtr&, const Vector&, int, const SPtr&) */ SPtr create(const SPtr& initialData, const Vector& subMeshes, int usage = MU_STATIC, const SPtr& skeleton = nullptr); /** * Creates a new empty and uninitialized mesh. You will need to manually initialize the mesh before using it. * * @note This should only be used for special cases and is not meant for normal use. */ SPtr createEmpty(); /** Returns some dummy mesh data with one triangle you may use for initializing a mesh. */ SPtr getDummyMeshData() const { return mDummyMeshData; } /** Returns a dummy mesh containing one triangle. */ HMesh getDummyMesh() const { return mDummyMesh; } protected: /** @copydoc Module::onStartUp */ virtual void onStartUp() override; private: SPtr mDummyMeshData; HMesh mDummyMesh; }; /** @} */ }