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/VertexField.h"
13#include "mc/deps/renderer/VertexLayout.h"
24namespace dragon::mesh {
class Mesh; }
28namespace mce {
struct Buffer; }
36class Mesh :
public ::mce::IndexBufferContainer {
41 using TextureList = ::brstd::static_vector<
42 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
48 ::ll::TypedStorage<8, 24, ::std::variant<::std::monostate, uint64, ::glm::ivec3>> mCacheKey;
49 ::ll::TypedStorage<1, 1, bool> mTemporary;
50 ::ll::TypedStorage<1, 1, ::mce::PrimitiveMode> mPrimitiveMode;
51 ::ll::TypedStorage<1, 1, ::mce::MeshDebugString> mDebugName;
52 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
53 ::ll::TypedStorage<8, 288, ::mce::MeshData> mMeshData;
57 ::mce::ClientResourcePointer<::std::variant<
60 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
61 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
66 ::mce::ClientResourcePointer<::std::variant<
69 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
70 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
72 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mVertexCount;
73 ::ll::TypedStorage<2, 70, ::mce::VertexLayout> mVertexLayout;
74 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mRawData;
79 Mesh& operator=(Mesh
const&);
86 MCAPI Mesh(::mce::Mesh&& c);
88 MCAPI Mesh(::mce::Mesh
const& rhs);
91 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
92 ::mce::MeshData&& data,
94 ::std::string_view debugName
97 MCAPI
void _freeHALData()
const;
99 MCAPI
bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName)
const;
101 MCAPI
void _move(::mce::Mesh& rhs);
103 MCAPI
void _renderMesh(
104 ::mce::MeshContext& meshContext,
105 ::mce::MaterialPtr
const& materialPtr,
106 ::brstd::static_vector<
107 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
113 ::UIActorOffscreenCaptureDescription,
114 ::UIThumbnailMeshOffscreenCaptureDescription,
115 ::UIMeshOffscreenCaptureDescription,
116 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
117 ::mce::IndexBufferContainer
const* overrideIndexBuffer,
118 ::std::optional<::dragon::RenderMetadata> renderMetadata
121 MCAPI
bool areBuffersValid()
const;
123 MCAPI
void generateHALData(::mce::VertexLayout
const* forcedLayout,
bool splitStream)
const;
125 MCAPI uint64 getMeshVertexCount()
const;
127 MCAPI
bool hasField(::mce::VertexField type)
const;
129 MCAPI
bool isValid()
const;
131 MCAPI
bool isVertexLayoutValid()
const;
133 MCAPI
explicit operator ::dragon::mesh::Mesh()
const;
135 MCAPI
void prepareAsEmptyData(::mce::VertexLayout
const& forcedLayout)
const;
137 MCAPI
void renderMesh(
138 ::mce::MeshContext& meshContext,
139 ::mce::MaterialPtr
const& materialPtr,
144 ::UIActorOffscreenCaptureDescription,
145 ::UIThumbnailMeshOffscreenCaptureDescription,
146 ::UIMeshOffscreenCaptureDescription,
147 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
148 ::mce::IndexBufferContainer
const* overrideIndexBuffer
151 MCAPI
void renderMesh(
152 ::mce::MeshContext& meshContext,
153 ::mce::MaterialPtr
const& materialPtr,
154 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
159 ::UIActorOffscreenCaptureDescription,
160 ::UIThumbnailMeshOffscreenCaptureDescription,
161 ::UIMeshOffscreenCaptureDescription,
162 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
163 ::mce::IndexBufferContainer
const* overrideIndexBuffer
166 MCAPI
void renderMesh(
167 ::mce::MeshContext& meshContext,
168 ::mce::MaterialPtr
const& materialPtr,
169 ::gsl::span<::mce::ClientTexture const*> textures,
174 ::UIActorOffscreenCaptureDescription,
175 ::UIThumbnailMeshOffscreenCaptureDescription,
176 ::UIMeshOffscreenCaptureDescription,
177 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
178 ::mce::IndexBufferContainer
const* overrideIndexBuffer
181 MCAPI
void renderMesh(
182 ::mce::MeshContext& meshContext,
183 ::mce::MaterialPtr
const& materialPtr,
184 ::std::initializer_list<::std::reference_wrapper<::mce::TexturePtr const>> textures,
189 ::UIActorOffscreenCaptureDescription,
190 ::UIThumbnailMeshOffscreenCaptureDescription,
191 ::UIMeshOffscreenCaptureDescription,
192 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
193 ::mce::IndexBufferContainer
const* overrideIndexBuffer
196 MCAPI
void renderMesh(
197 ::mce::MeshContext& meshContext,
198 ::dragon::RenderMetadata
const& renderMetadata,
199 ::mce::MaterialPtr
const& materialPtr,
200 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
203 ::mce::IndexBufferContainer
const* overrideIndexBuffer
216 MCAPI
void* $ctor(::mce::Mesh&& c);
218 MCAPI
void* $ctor(::mce::Mesh
const& rhs);
221 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
222 ::mce::MeshData&& data,
224 ::std::string_view debugName
Definition MaterialPtr.h:15
Definition MeshContext.h:7
Definition TexturePtr.h:19
Definition UIActorOffscreenCaptureDescription.h:5
Definition UIMeshOffscreenCaptureDescription.h:5
Definition UIStructureVolumeOffscreenCaptureDescription.h:8
Definition UIThumbnailMeshOffscreenCaptureDescription.h:5
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition BufferResourceService.h:7
Definition ClientTexture.h:7
Definition ServerTexture.h:7