3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/checked_resource_service/ClientResourcePointer.h"
7#include "mc/deps/core/debug/brstd/static_vector.h"
8#include "mc/deps/core_graphics/enums/PrimitiveMode.h"
9#include "mc/deps/minecraft_renderer/renderer/MeshData.h"
10#include "mc/deps/minecraft_renderer/renderer/MeshDebugString.h"
11#include "mc/deps/minecraft_renderer/resources/IndexBufferContainer.h"
12#include "mc/deps/renderer/VertexLayout.h"
13#include "mc/deps/renderer/hal/interface/Buffer.h"
21namespace dragon::mesh {
class Mesh; }
32class Mesh :
public ::mce::IndexBufferContainer {
37 using TextureList = ::brstd::static_vector<
38 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
44 ::ll::TypedStorage<8, 24, ::std::variant<::std::monostate, uint64, ::glm::ivec3>> mCacheKey;
45 ::ll::TypedStorage<1, 1, bool> mTemporary;
46 ::ll::TypedStorage<1, 1, ::mce::PrimitiveMode> mPrimitiveMode;
47 ::ll::TypedStorage<1, 1, ::mce::MeshDebugString> mDebugName;
48 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
49 ::ll::TypedStorage<8, 336, ::mce::MeshData> mMeshData;
53 ::mce::ClientResourcePointer<::std::variant<
56 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
57 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
62 ::mce::ClientResourcePointer<::std::variant<
65 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
66 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
68 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mVertexCount;
69 ::ll::TypedStorage<2, 110, ::mce::VertexLayout> mVertexLayout;
70 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mRawData;
75 Mesh& operator=(Mesh
const&);
81 MCAPI Mesh(::mce::Mesh&& c);
83 MCAPI Mesh(::mce::Mesh
const& rhs);
86 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
87 ::mce::MeshData&& data,
89 ::std::string_view debugName
92 MCAPI
bool _loadBlankData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName)
const;
94 MCAPI
bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName)
const;
96 MCAPI
void _move(::mce::Mesh& rhs);
98 MCAPI
void _renderMesh(
99 ::mce::MeshContext& meshContext,
100 ::mce::MaterialPtr
const& materialPtr,
101 ::brstd::static_vector<
102 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
106 ::OffscreenCaptureDescription
const& offscreenCaptureDescription,
107 ::mce::IndexBufferContainer
const* overrideIndexBuffer,
108 ::std::optional<::dragon::RenderMetadata> renderMetadata
111 MCAPI
bool areBuffersValid()
const;
113 MCAPI
void generateHALData(::mce::VertexLayout
const* forcedLayout,
bool splitStream)
const;
115 MCAPI ::gsl::span<uchar const> getRawData()
const;
117 MCAPI
bool isValid()
const;
119 MCAPI
void load(::mce::BufferResourceService& bufferResourceService);
121 MCAPI
explicit operator ::dragon::mesh::Mesh()
const;
123 MCAPI
void prepareAsEmptyData(::mce::VertexLayout
const& forcedLayout)
const;
125 MCAPI
void prepareRenderData(::mce::VertexLayout
const& forcedLayout)
const;
127 MCAPI
void renderMesh(
128 ::mce::MeshContext& meshContext,
129 ::mce::MaterialPtr
const& materialPtr,
130 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
133 ::OffscreenCaptureDescription
const& offscreenCaptureDescription,
134 ::mce::IndexBufferContainer
const* overrideIndexBuffer
137 MCAPI
void renderMesh(
138 ::mce::MeshContext& meshContext,
139 ::mce::MaterialPtr
const& materialPtr,
140 ::gsl::span<::mce::ClientTexture const*> textures,
143 ::OffscreenCaptureDescription
const& offscreenCaptureDescription,
144 ::mce::IndexBufferContainer
const* overrideIndexBuffer
147 MCAPI
void renderMesh(
148 ::mce::MeshContext& meshContext,
149 ::dragon::RenderMetadata
const& renderMetadata,
150 ::mce::MaterialPtr
const& materialPtr,
151 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
154 ::mce::IndexBufferContainer
const* overrideIndexBuffer
165 MCAPI
void* $ctor(::mce::Mesh&& c);
167 MCAPI
void* $ctor(::mce::Mesh
const& rhs);
170 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
171 ::mce::MeshData&& data,
173 ::std::string_view debugName
Definition MaterialPtr.h:14
Definition MeshContext.h:7
Definition TexturePtr.h:7
Definition OffscreenCaptureDescription.h:5
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition BufferResourceService.h:7
Definition ClientTexture.h:7
Definition ServerTexture.h:7