LeviLamina
Loading...
Searching...
No Matches
Mesh.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
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"
14#include "mc/deps/renderer/hal/interface/Buffer.h"
15
16// auto generated forward declare list
17// clang-format off
22namespace dragon { struct RenderMetadata; }
23namespace dragon { struct ResolvedIndexBufferResource; }
24namespace dragon { struct ResolvedVertexBufferResource; }
25namespace dragon::mesh { class Mesh; }
26namespace mce { class MaterialPtr; }
27namespace mce { class MeshContext; }
28namespace mce { class Texture; }
29namespace mce { class TexturePtr; }
30namespace mce { class VertexFormat; }
31namespace mce { struct BufferResourceService; }
32namespace mce { struct ClientTexture; }
33namespace mce { struct ServerTexture; }
34// clang-format on
35
36namespace mce {
37
38class Mesh : public ::mce::IndexBufferContainer {
39public:
40 // Mesh inner types define
41 using Index = uint;
42
43 using TextureList = ::brstd::static_vector<
44 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
45 8>;
46
47public:
48 // member variables
49 // NOLINTBEGIN
50 ::ll::TypedStorage<8, 24, ::std::variant<::std::monostate, uint64, ::glm::ivec3>> mCacheKey;
51 ::ll::TypedStorage<1, 1, bool> mTemporary;
52 ::ll::TypedStorage<1, 1, ::mce::PrimitiveMode> mPrimitiveMode;
53 ::ll::TypedStorage<1, 1, ::mce::MeshDebugString> mDebugName;
54 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
55 ::ll::TypedStorage<8, 312, ::mce::MeshData> mMeshData;
56 ::ll::TypedStorage<
57 8,
58 24,
59 ::mce::ClientResourcePointer<::std::variant<
60 ::std::monostate,
61 ::mce::Buffer,
62 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
63 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
64 mVertexBuffer;
65 ::ll::TypedStorage<
66 8,
67 24,
68 ::mce::ClientResourcePointer<::std::variant<
69 ::std::monostate,
70 ::mce::Buffer,
71 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
72 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
73 mAttributeBuffer;
74 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mVertexCount;
75 ::ll::TypedStorage<2, 70, ::mce::VertexLayout> mVertexLayout;
76 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mRawData;
77 // NOLINTEND
78
79public:
80 // prevent constructor by default
81 Mesh& operator=(Mesh const&);
82
83public:
84 // member functions
85 // NOLINTBEGIN
86 MCAPI Mesh();
87
88 MCAPI Mesh(::mce::Mesh&& c);
89
90 MCAPI Mesh(::mce::Mesh const& rhs);
91
92 MCAPI Mesh(
93 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
94 ::mce::MeshData&& data,
95 bool temporary,
96 ::std::string_view debugName
97 );
98
99 MCAPI bool _loadBlankData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName) const;
100
101 MCAPI bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName) const;
102
103 MCAPI void _move(::mce::Mesh& rhs);
104
105 MCAPI void _renderMesh(
106 ::mce::MeshContext& meshContext,
107 ::mce::MaterialPtr const& materialPtr,
108 ::brstd::static_vector<
109 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
110 8> textures,
111 uint offscreenCaptureDescription,
112 uint renderMetadata,
113 ::std::variant<
114 ::std::monostate,
115 ::UIActorOffscreenCaptureDescription,
116 ::UIThumbnailMeshOffscreenCaptureDescription,
117 ::UIMeshOffscreenCaptureDescription,
118 ::UIStructureVolumeOffscreenCaptureDescription> const&,
119 ::mce::IndexBufferContainer const*,
120 ::std::optional<::dragon::RenderMetadata>
121 ) const;
122
123 MCAPI bool areBuffersValid() const;
124
125 MCAPI void generateHALData(::mce::VertexLayout const* forcedLayout, bool splitStream) const;
126
127 MCAPI uint64 getMeshVertexCount() const;
128
129 MCAPI ::gsl::span<uchar const> getRawData() const;
130
131 MCAPI ::mce::VertexFormat const& getVertexFormat(uint stream) const;
132
133 MCFOLD ::mce::VertexLayout const& getVertexLayout() const;
134
135 MCAPI bool hasField(::mce::VertexField type) const;
136
137 MCFOLD bool isTemporary() const;
138
139 MCAPI bool isValid() const;
140
141 MCAPI void load(::mce::BufferResourceService& bufferResourceService);
142
143 MCAPI explicit operator ::dragon::mesh::Mesh() const;
144
145 MCAPI ::mce::Mesh& operator=(::mce::Mesh&& rhs);
146
147 MCAPI void prepareAsEmptyData(::mce::VertexLayout const& forcedLayout) const;
148
149 MCAPI void prepareRenderData(::mce::VertexLayout const& forcedLayout) const;
150
151 MCAPI void releaseVertexBuffer();
152
153 MCAPI void renderMesh(
154 ::mce::MeshContext& meshContext,
155 ::mce::MaterialPtr const& materialPtr,
156 uint startOffset,
157 uint count,
158 ::std::variant<
159 ::std::monostate,
160 ::UIActorOffscreenCaptureDescription,
161 ::UIThumbnailMeshOffscreenCaptureDescription,
162 ::UIMeshOffscreenCaptureDescription,
163 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
164 ::mce::IndexBufferContainer const* overrideIndexBuffer
165 ) const;
166
167 MCFOLD void renderMesh(
168 ::mce::MeshContext& meshContext,
169 ::mce::MaterialPtr const& materialPtr,
170 ::std::initializer_list<::std::reference_wrapper<::mce::Texture const>> textures,
171 uint startOffset,
172 uint count,
173 ::mce::IndexBufferContainer const* overrideIndexBuffer
174 ) const;
175
176 MCAPI void renderMesh(
177 ::mce::MeshContext& meshContext,
178 ::mce::MaterialPtr const& materialPtr,
179 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture> const& texture,
180 uint startOffset,
181 uint count,
182 ::std::variant<
183 ::std::monostate,
184 ::UIActorOffscreenCaptureDescription,
185 ::UIThumbnailMeshOffscreenCaptureDescription,
186 ::UIMeshOffscreenCaptureDescription,
187 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
188 ::mce::IndexBufferContainer const* overrideIndexBuffer
189 ) const;
190
191 MCAPI void renderMesh(
192 ::mce::MeshContext& meshContext,
193 ::mce::MaterialPtr const& materialPtr,
194 ::gsl::span<::mce::ServerTexture const*> textures,
195 uint startOffset,
196 uint count,
197 ::std::variant<
198 ::std::monostate,
199 ::UIActorOffscreenCaptureDescription,
200 ::UIThumbnailMeshOffscreenCaptureDescription,
201 ::UIMeshOffscreenCaptureDescription,
202 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
203 ::mce::IndexBufferContainer const* overrideIndexBuffer
204 ) const;
205
206 MCAPI void renderMesh(
207 ::mce::MeshContext& meshContext,
208 ::mce::MaterialPtr const& materialPtr,
209 ::gsl::span<::mce::TexturePtr const> textures,
210 uint startOffset,
211 uint count,
212 ::std::variant<
213 ::std::monostate,
214 ::UIActorOffscreenCaptureDescription,
215 ::UIThumbnailMeshOffscreenCaptureDescription,
216 ::UIMeshOffscreenCaptureDescription,
217 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
218 ::mce::IndexBufferContainer const* overrideIndexBuffer
219 ) const;
220
221 MCAPI void renderMesh(
222 ::mce::MeshContext& meshContext,
223 ::mce::MaterialPtr const& materialPtr,
224 ::gsl::span<::mce::ClientTexture const*> textures,
225 uint startOffset,
226 uint count,
227 ::std::variant<
228 ::std::monostate,
229 ::UIActorOffscreenCaptureDescription,
230 ::UIThumbnailMeshOffscreenCaptureDescription,
231 ::UIMeshOffscreenCaptureDescription,
232 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
233 ::mce::IndexBufferContainer const* overrideIndexBuffer
234 ) const;
235
236 MCAPI void renderMesh(
237 ::mce::MeshContext& meshContext,
238 ::mce::MaterialPtr const& materialPtr,
239 ::std::initializer_list<::std::reference_wrapper<::mce::TexturePtr const>> textures,
240 uint startOffset,
241 uint count,
242 ::std::variant<
243 ::std::monostate,
244 ::UIActorOffscreenCaptureDescription,
245 ::UIThumbnailMeshOffscreenCaptureDescription,
246 ::UIMeshOffscreenCaptureDescription,
247 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
248 ::mce::IndexBufferContainer const* overrideIndexBuffer
249 ) const;
250
251 MCAPI void renderMesh(
252 ::mce::MeshContext& meshContext,
253 ::dragon::RenderMetadata const& renderMetadata,
254 ::mce::MaterialPtr const& materialPtr,
255 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture> const& texture,
256 uint startOffset,
257 uint count,
258 ::mce::IndexBufferContainer const* overrideIndexBuffer
259 ) const;
260
261 MCAPI void reset();
262
263 MCAPI ~Mesh();
264 // NOLINTEND
265
266public:
267 // constructor thunks
268 // NOLINTBEGIN
269 MCAPI void* $ctor();
270
271 MCAPI void* $ctor(::mce::Mesh&& c);
272
273 MCAPI void* $ctor(::mce::Mesh const& rhs);
274
275 MCAPI void* $ctor(
276 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
277 ::mce::MeshData&& data,
278 bool temporary,
279 ::std::string_view debugName
280 );
281 // NOLINTEND
282
283public:
284 // destructor thunk
285 // NOLINTBEGIN
286 MCAPI void $dtor();
287 // NOLINTEND
288};
289
290} // namespace mce
Definition Mesh.h:7
Definition MaterialPtr.h:15
Definition MeshContext.h:7
Definition Mesh.h:7
Definition TexturePtr.h:7
Definition Texture.h:7
Definition VertexFormat.h:7
Definition UIActorOffscreenCaptureDescription.h:5
Definition UIMeshOffscreenCaptureDescription.h:5
Definition UIStructureVolumeOffscreenCaptureDescription.h:5
Definition UIThumbnailMeshOffscreenCaptureDescription.h:5
Definition RenderMetadata.h:7
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition BufferResourceService.h:7
Definition ClientTexture.h:7
Definition ServerTexture.h:7