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/VertexLayout.h"
13#include "mc/deps/renderer/hal/interface/Buffer.h"
14
15// auto generated forward declare list
16// clang-format off
18namespace dragon { struct RenderMetadata; }
19namespace dragon { struct ResolvedIndexBufferResource; }
20namespace dragon { struct ResolvedVertexBufferResource; }
21namespace dragon::mesh { class Mesh; }
22namespace mce { class MaterialPtr; }
23namespace mce { class MeshContext; }
24namespace mce { class TexturePtr; }
25namespace mce { struct BufferResourceService; }
26namespace mce { struct ClientTexture; }
27namespace mce { struct ServerTexture; }
28// clang-format on
29
30namespace mce {
31
32class Mesh : public ::mce::IndexBufferContainer {
33public:
34 // Mesh inner types define
35 using Index = uint;
36
37 using TextureList = ::brstd::static_vector<
38 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
39 8>;
40
41public:
42 // member variables
43 // NOLINTBEGIN
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;
50 ::ll::TypedStorage<
51 8,
52 24,
53 ::mce::ClientResourcePointer<::std::variant<
54 ::std::monostate,
55 ::mce::Buffer,
56 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
57 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
58 mVertexBuffer;
59 ::ll::TypedStorage<
60 8,
61 24,
62 ::mce::ClientResourcePointer<::std::variant<
63 ::std::monostate,
64 ::mce::Buffer,
65 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
66 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
67 mAttributeBuffer;
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;
71 // NOLINTEND
72
73public:
74 // prevent constructor by default
75 Mesh& operator=(Mesh const&);
76 Mesh();
77
78public:
79 // member functions
80 // NOLINTBEGIN
81 MCAPI Mesh(::mce::Mesh&& c);
82
83 MCAPI Mesh(::mce::Mesh const& rhs);
84
85 MCAPI Mesh(
86 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
87 ::mce::MeshData&& data,
88 bool temporary,
89 ::std::string_view debugName
90 );
91
92 MCAPI bool _loadBlankData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName) const;
93
94 MCAPI bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName) const;
95
96 MCAPI void _move(::mce::Mesh& rhs);
97
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>,
103 8> textures,
104 uint startOffset,
105 uint count,
106 ::OffscreenCaptureDescription const& offscreenCaptureDescription,
107 ::mce::IndexBufferContainer const* overrideIndexBuffer,
108 ::std::optional<::dragon::RenderMetadata> renderMetadata
109 ) const;
110
111 MCAPI bool areBuffersValid() const;
112
113 MCAPI void generateHALData(::mce::VertexLayout const* forcedLayout, bool splitStream) const;
114
115 MCAPI ::gsl::span<uchar const> getRawData() const;
116
117 MCAPI bool isValid() const;
118
119 MCAPI void load(::mce::BufferResourceService& bufferResourceService);
120
121 MCAPI explicit operator ::dragon::mesh::Mesh() const;
122
123 MCAPI void prepareAsEmptyData(::mce::VertexLayout const& forcedLayout) const;
124
125 MCAPI void prepareRenderData(::mce::VertexLayout const& forcedLayout) const;
126
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,
131 uint startOffset,
132 uint count,
133 ::OffscreenCaptureDescription const& offscreenCaptureDescription,
134 ::mce::IndexBufferContainer const* overrideIndexBuffer
135 ) const;
136
137 MCAPI void renderMesh(
138 ::mce::MeshContext& meshContext,
139 ::mce::MaterialPtr const& materialPtr,
140 ::gsl::span<::mce::ClientTexture const*> textures,
141 uint startOffset,
142 uint count,
143 ::OffscreenCaptureDescription const& offscreenCaptureDescription,
144 ::mce::IndexBufferContainer const* overrideIndexBuffer
145 ) const;
146
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,
152 uint startOffset,
153 uint count,
154 ::mce::IndexBufferContainer const* overrideIndexBuffer
155 ) const;
156
157 MCAPI void reset();
158
159 MCAPI ~Mesh();
160 // NOLINTEND
161
162public:
163 // constructor thunks
164 // NOLINTBEGIN
165 MCAPI void* $ctor(::mce::Mesh&& c);
166
167 MCAPI void* $ctor(::mce::Mesh const& rhs);
168
169 MCAPI void* $ctor(
170 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
171 ::mce::MeshData&& data,
172 bool temporary,
173 ::std::string_view debugName
174 );
175 // NOLINTEND
176
177public:
178 // destructor thunk
179 // NOLINTBEGIN
180 MCAPI void $dtor();
181 // NOLINTEND
182};
183
184} // namespace mce
Definition Mesh.h:7
Definition MaterialPtr.h:14
Definition MeshContext.h:7
Definition Mesh.h:7
Definition TexturePtr.h:7
Definition OffscreenCaptureDescription.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