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
15// auto generated forward declare list
16// clang-format off
21namespace dragon { struct RenderMetadata; }
22namespace dragon { struct ResolvedIndexBufferResource; }
23namespace dragon { struct ResolvedVertexBufferResource; }
24namespace dragon::mesh { class Mesh; }
25namespace mce { class MaterialPtr; }
26namespace mce { class MeshContext; }
27namespace mce { class TexturePtr; }
28namespace mce { struct Buffer; }
29namespace mce { struct BufferResourceService; }
30namespace mce { struct ClientTexture; }
31namespace mce { struct ServerTexture; }
32// clang-format on
33
34namespace mce {
35
36class Mesh : public ::mce::IndexBufferContainer {
37public:
38 // Mesh inner types define
39 using Index = uint;
40
41 using TextureList = ::brstd::static_vector<
42 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
43 8>;
44
45public:
46 // member variables
47 // NOLINTBEGIN
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;
54 ::ll::TypedStorage<
55 8,
56 24,
57 ::mce::ClientResourcePointer<::std::variant<
58 ::std::monostate,
59 ::mce::Buffer,
60 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
61 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
62 mVertexBuffer;
63 ::ll::TypedStorage<
64 8,
65 24,
66 ::mce::ClientResourcePointer<::std::variant<
67 ::std::monostate,
68 ::mce::Buffer,
69 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
70 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
71 mAttributeBuffer;
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;
75 // NOLINTEND
76
77public:
78 // prevent constructor by default
79 Mesh& operator=(Mesh const&);
80
81public:
82 // member functions
83 // NOLINTBEGIN
84 MCAPI Mesh();
85
86 MCAPI Mesh(::mce::Mesh&& c);
87
88 MCAPI Mesh(::mce::Mesh const& rhs);
89
90 MCAPI Mesh(
91 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
92 ::mce::MeshData&& data,
93 bool temporary,
94 ::std::string_view debugName
95 );
96
97 MCAPI void _freeHALData() const;
98
99 MCAPI bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName) const;
100
101 MCAPI void _move(::mce::Mesh& rhs);
102
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>,
108 8> textures,
109 uint startOffset,
110 uint count,
111 ::std::variant<
112 ::std::monostate,
113 ::UIActorOffscreenCaptureDescription,
114 ::UIThumbnailMeshOffscreenCaptureDescription,
115 ::UIMeshOffscreenCaptureDescription,
116 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
117 ::mce::IndexBufferContainer const* overrideIndexBuffer,
118 ::std::optional<::dragon::RenderMetadata> renderMetadata
119 ) const;
120
121 MCAPI bool areBuffersValid() const;
122
123 MCAPI void generateHALData(::mce::VertexLayout const* forcedLayout, bool splitStream) const;
124
125 MCAPI uint64 getMeshVertexCount() const;
126
127 MCAPI bool hasField(::mce::VertexField type) const;
128
129 MCAPI bool isValid() const;
130
131 MCAPI bool isVertexLayoutValid() const;
132
133 MCAPI explicit operator ::dragon::mesh::Mesh() const;
134
135 MCAPI void prepareAsEmptyData(::mce::VertexLayout const& forcedLayout) const;
136
137 MCAPI void renderMesh(
138 ::mce::MeshContext& meshContext,
139 ::mce::MaterialPtr const& materialPtr,
140 uint startOffset,
141 uint count,
142 ::std::variant<
143 ::std::monostate,
144 ::UIActorOffscreenCaptureDescription,
145 ::UIThumbnailMeshOffscreenCaptureDescription,
146 ::UIMeshOffscreenCaptureDescription,
147 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
148 ::mce::IndexBufferContainer const* overrideIndexBuffer
149 ) const;
150
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,
155 uint startOffset,
156 uint count,
157 ::std::variant<
158 ::std::monostate,
159 ::UIActorOffscreenCaptureDescription,
160 ::UIThumbnailMeshOffscreenCaptureDescription,
161 ::UIMeshOffscreenCaptureDescription,
162 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
163 ::mce::IndexBufferContainer const* overrideIndexBuffer
164 ) const;
165
166 MCAPI void renderMesh(
167 ::mce::MeshContext& meshContext,
168 ::mce::MaterialPtr const& materialPtr,
169 ::gsl::span<::mce::ClientTexture const*> textures,
170 uint startOffset,
171 uint count,
172 ::std::variant<
173 ::std::monostate,
174 ::UIActorOffscreenCaptureDescription,
175 ::UIThumbnailMeshOffscreenCaptureDescription,
176 ::UIMeshOffscreenCaptureDescription,
177 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
178 ::mce::IndexBufferContainer const* overrideIndexBuffer
179 ) const;
180
181 MCAPI void renderMesh(
182 ::mce::MeshContext& meshContext,
183 ::mce::MaterialPtr const& materialPtr,
184 ::std::initializer_list<::std::reference_wrapper<::mce::TexturePtr const>> textures,
185 uint startOffset,
186 uint count,
187 ::std::variant<
188 ::std::monostate,
189 ::UIActorOffscreenCaptureDescription,
190 ::UIThumbnailMeshOffscreenCaptureDescription,
191 ::UIMeshOffscreenCaptureDescription,
192 ::UIStructureVolumeOffscreenCaptureDescription> const& offscreenCaptureDescription,
193 ::mce::IndexBufferContainer const* overrideIndexBuffer
194 ) const;
195
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,
201 uint startOffset,
202 uint count,
203 ::mce::IndexBufferContainer const* overrideIndexBuffer
204 ) const;
205
206 MCAPI void reset();
207
208 MCAPI ~Mesh();
209 // NOLINTEND
210
211public:
212 // constructor thunks
213 // NOLINTBEGIN
214 MCAPI void* $ctor();
215
216 MCAPI void* $ctor(::mce::Mesh&& c);
217
218 MCAPI void* $ctor(::mce::Mesh const& rhs);
219
220 MCAPI void* $ctor(
221 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
222 ::mce::MeshData&& data,
223 bool temporary,
224 ::std::string_view debugName
225 );
226 // NOLINTEND
227
228public:
229 // destructor thunk
230 // NOLINTBEGIN
231 MCAPI void $dtor();
232 // NOLINTEND
233};
234
235} // namespace mce
Definition Mesh.h:7
Definition MaterialPtr.h:15
Definition MeshContext.h:7
Definition Mesh.h:7
Definition TexturePtr.h:19
Definition UIActorOffscreenCaptureDescription.h:5
Definition UIMeshOffscreenCaptureDescription.h:5
Definition UIStructureVolumeOffscreenCaptureDescription.h:8
Definition UIThumbnailMeshOffscreenCaptureDescription.h:5
Definition RenderMetadata.h:7
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition BufferResourceService.h:7
Definition Buffer.h:7
Definition ClientTexture.h:7
Definition ServerTexture.h:7