LeviLamina
Loading...
Searching...
No Matches
ItemInHandRenderer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/renderer/ActorShaderManager.h"
7#include "mc/client/renderer/game/ItemInHandRenderFrameId.h"
8#include "mc/deps/core/math/Matrix.h"
9#include "mc/deps/core/utility/pub_sub/Connector.h"
10#include "mc/deps/core/utility/pub_sub/Subscription.h"
11#include "mc/deps/minecraft_renderer/game/ItemContextFlags.h"
12#include "mc/deps/minecraft_renderer/renderer/MaterialPtr.h"
13#include "mc/deps/minecraft_renderer/renderer/TexturePtr.h"
14#include "mc/deps/renderer/MatrixStack.h"
15#include "mc/world/item/ItemStack.h"
16#include "mc/world/level/block/BlockShape.h"
17
18// auto generated forward declare list
19// clang-format off
20class Actor;
23class Block;
25class BlockType;
28class IClientInstance;
29class ItemRenderCall;
30class Level;
31class Mob;
32class Player;
34class Tessellator;
36struct Brightness;
37namespace dragon { struct RenderMetadata; }
38namespace mce { class TextureGroup; }
39namespace mce::framebuilder { struct FrameLightingModelCapabilities; }
40// clang-format on
41
43public:
44 // ItemInHandRenderer inner types declare
45 // clang-format off
47 // clang-format on
48
49 // ItemInHandRenderer inner types define
51 public:
52 // OffsetForLowAspectRatio inner types declare
53 // clang-format off
54 struct Scoped;
55 // clang-format on
56
57 // OffsetForLowAspectRatio inner types define
58 enum class Direction : uchar {
59 Left = 0,
60 Right = 1,
61 };
62
63 struct Scoped {
64 public:
65 // member variables
66 // NOLINTBEGIN
67 ::ll::UntypedStorage<1, 1> mUnk8b3a1f;
68 ::ll::UntypedStorage<8, 8> mUnkad04bd;
69 ::ll::UntypedStorage<8, 8> mUnk711535;
70 ::ll::UntypedStorage<8, 8> mUnk673c3d;
71 ::ll::UntypedStorage<1, 1> mUnk70d991;
72 ::ll::UntypedStorage<4, 4> mUnk1a7539;
73 ::ll::UntypedStorage<1, 1> mUnkb8460a;
74 // NOLINTEND
75
76 public:
77 // prevent constructor by default
78 Scoped& operator=(Scoped const&);
79 Scoped(Scoped const&);
80 Scoped();
81
82 public:
83 // member functions
84 // NOLINTBEGIN
85 MCNAPI ~Scoped();
86 // NOLINTEND
87
88 public:
89 // destructor thunk
90 // NOLINTBEGIN
91 MCNAPI void $dtor();
92 // NOLINTEND
93 };
94 };
95
96 using RenderMap = ::std::map<::ItemInHandRenderFrameId, ::ItemRenderCall>;
97
98public:
99 // member variables
100 // NOLINTBEGIN
101 ::ll::TypedStorage<8, 152, ::ItemStack> mItem;
102 ::ll::TypedStorage<8, 152, ::ItemStack> mOffHandItem;
103 ::ll::TypedStorage<4, 4, int> mSlot;
104 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
105 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TextureTessellator>> mTextureTessellator;
106 ::ll::TypedStorage<4, 4, float> mHeight;
107 ::ll::TypedStorage<4, 4, float> mOldHeight;
108 ::ll::TypedStorage<4, 4, float> mHeightOffHand;
109 ::ll::TypedStorage<4, 4, float> mOldHeightOffHand;
110 ::ll::TypedStorage<8, 8, ::BlockTessellator&> mBlockTessellator;
111 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlock;
112 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlockColor;
113 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaBlock;
114 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItem;
115 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatBlendBlock;
116 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatBlendBlockNoColor;
117 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaColoredBlock;
118 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItemMultiColorTint;
119 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaOneSidedBlock;
120 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaOneSidedColoredBlock;
121 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlockGlint;
122 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaBlockGlint;
123 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItemGlint;
124 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatFishingLine;
125 ::ll::TypedStorage<8, 128, ::std::array<::mce::MaterialPtr const*, 16>> mMaterialMatrix;
126 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mGlintTexture;
127 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BannerBlockActor>> mBannerEntity;
128 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DecoratedPotBlockActor>> mDecoratedPotEntity;
129 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SerializedActorBlockActor>> mCopperGolemStatueEntity;
130 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ConduitBlockActor>> mConduitEntity;
131 ::ll::TypedStorage<8, 16, ::std::map<::ItemInHandRenderFrameId, ::ItemRenderCall>> mRenderObjects;
132 ::ll::TypedStorage<4, 64, ::Matrix> mTransform;
133 ::ll::TypedStorage<4, 64, ::Matrix> mPreFirstPersonItemRenderProj;
134 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPauseStateChange;
135 ::ll::TypedStorage<8, 8, ::std::chrono::duration<double, ::std::ratio<1, 1>>> mTimer;
136 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastTime;
137 ::ll::TypedStorage<1, 1, bool> mIsDeferredEnabled;
138 // NOLINTEND
139
140public:
141 // prevent constructor by default
142 ItemInHandRenderer& operator=(ItemInHandRenderer const&);
143 ItemInHandRenderer(ItemInHandRenderer const&);
144 ItemInHandRenderer();
145
146public:
147 // virtual functions
148 // NOLINTBEGIN
149 virtual ~ItemInHandRenderer() /*override*/ = default;
150 // NOLINTEND
151
152public:
153 // member functions
154 // NOLINTBEGIN
155 MCAPI ItemInHandRenderer(
156 ::IClientInstance& client,
157 ::BlockTessellator& commonRenderer,
158 ::std::shared_ptr<::mce::TextureGroup> textureGroup
159 );
160
161 MCAPI void _applyDefaultItemTransforms(
163 ::ItemStack const& item,
164 bool isInHandItem,
165 ::BlockType const* blockType,
166 ::BlockShape blockShape,
167 ::ItemRenderCall const* renderObjectCall,
168 float heldItemScale,
169 bool posAndRotSetByJSON
170 );
171
172 MCAPI ::ItemRenderCall* _getRenderCall(::Mob* mob, ::ItemStack const& itemInstance, int fallbackFrame);
173
174 MCAPI void _pushSparklerParticles(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Level& level);
175
176 MCAPI ::ItemRenderCall&
177 _rebuildItem(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int fallbackFrame);
178
179 MCAPI void _renderBannerBlockItem(
180 ::BaseActorRenderContext& renderContext,
181 ::dragon::RenderMetadata const renderMetadata,
182 ::ItemStack const& item,
183 ::Actor& entity,
184 ::Brightness lightEmission,
185 ::std::optional<::glm::vec3> const& lightEmissionColor,
186 float frameAlpha,
187 float scale
188 ) const;
189
190 MCAPI void _renderChestBlockItem(
191 ::BaseActorRenderContext& renderContext,
192 ::dragon::RenderMetadata const renderMetadata,
193 ::BlockType const* blockType,
194 ::Actor& entity,
195 bool const isInHandItem
196 ) const;
197
198 MCAPI void _renderConduitBlockItem(
199 ::BaseActorRenderContext& renderContext,
200 ::dragon::RenderMetadata const renderMetadata,
201 ::Actor& entity,
202 ::Brightness lightEmission,
203 ::std::optional<::glm::vec3> const& lightEmissionColor,
204 float frameAlpha
205 ) const;
206
207 MCAPI void _renderCopperGolemStatueBlockItem(
208 ::BaseActorRenderContext& renderContext,
209 ::dragon::RenderMetadata const renderMetadata,
210 ::ItemStack const& item,
211 ::Actor& entity,
212 bool const isFirstPerson,
213 bool const isInHandItem
214 ) const;
215
216 MCAPI void _renderDecoratedPotBlockItem(
217 ::BaseActorRenderContext& renderContext,
218 ::dragon::RenderMetadata const renderMetadata,
219 ::ItemStack const& item,
220 ::Actor& entity,
221 bool const isFirstPerson
222 ) const;
223
224 MCAPI void
225 _renderFishingRod(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Actor& entity) const;
226
227 MCAPI void _renderGlowstickBlockItem(
228 ::BaseActorRenderContext& renderContext,
229 ::dragon::RenderMetadata const renderMetadata,
230 ::ItemStack const& item,
231 ::Actor& entity,
232 ::Brightness lightEmission,
233 ::std::optional<::glm::vec3> const& lightEmissionColor,
234 float frameAlpha,
235 ::ItemContextFlags itemFlags,
236 float scale
237 );
238
239 MCAPI void _renderMiniMapHand(::BaseActorRenderContext& renderContext, ::Player& player, bool inOffhand);
240
241 MCAPI void _renderPhotoMapItem(
242 ::BaseActorRenderContext& renderContext,
243 ::Player& player,
244 float const frameAlpha,
245 bool const isMainHand
246 );
247
248 MCAPI void _renderShulkerBoxBlockItem(
249 ::BaseActorRenderContext& renderContext,
250 ::dragon::RenderMetadata const renderMetadata,
251 ::ItemStack const& item,
252 ::Actor& entity,
253 ::Brightness lightEmission,
254 ::std::optional<::glm::vec3> const& lightEmissionColor,
255 float frameAlpha
256 ) const;
257
258 MCAPI void _tessellateBlockItem(
259 ::Tessellator& tessellator,
261 ::Block const& block,
263 );
264
265 MCAPI void _transformWorldMatrixFromJson(
267 ::ItemStack const& item,
268 bool const isMainHand,
269 ::ItemContextFlags itemFlags,
270 float textureScale
271 );
272
273 MCAPI void clearRenderObjects();
274
275 MCAPI ::ItemRenderCall const&
276 getRenderCallAtFrame(::BaseActorRenderContext& renderContext, ::ItemStack const& item, int frame);
277
278 MCAPI void registerPauseManagerCallback(::Bedrock::PubSub::Connector<void(bool)>& connector);
279
280 MCAPI void
281 renderFirstPerson(::BaseActorRenderContext& renderContext, ::Matrix const& prevProj, ::ItemContextFlags itemFlags);
282
283 MCAPI void renderItem(
284 ::BaseActorRenderContext& renderContext,
285 ::Actor& entity,
286 ::ItemStack const& item,
287 bool posAndRotSetByJSON,
288 ::ItemContextFlags itemFlags,
289 bool useMatrixAsIs,
290 bool renderingMainHand
291 );
292
293 MCAPI void renderItemNew(
294 ::BaseActorRenderContext& renderContext,
295 ::Actor& entity,
296 ::ItemStack const& item,
297 ::ItemContextFlags itemFlags,
298 ::Brightness lightEmission
299 );
300
301 MCAPI void renderObject(
302 ::BaseActorRenderContext& renderContext,
303 ::ItemRenderCall const& renderObject,
304 ::dragon::RenderMetadata const& renderMetadata,
305 ::ItemContextFlags itemFlags
306 );
307
308 MCAPI void
309 renderOffhandItem(::BaseActorRenderContext& renderContext, ::Player& player, ::ItemContextFlags itemFlags);
310
311 MCAPI void
312 tessellateAtFrame(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int frame);
313
314 MCAPI void tick();
315 // NOLINTEND
316
317public:
318 // static functions
319 // NOLINTBEGIN
320 MCAPI static bool _areNotMatchingChemistrySticks(::ItemStack& itemBefore, ::ItemStack const& itemAfter);
321
322 MCAPI static ::dragon::RenderMetadata _createRenderMetadata(
323 ::BaseActorRenderContext const& renderContext,
324 ::Actor const& entity,
325 ::ItemStack const& item
326 );
327
328 MCAPI static void _tessellateTextureItem(
329 ::BaseActorRenderContext& renderContext,
330 ::TextureTessellator& textureTessellator,
331 ::Mob* mob,
332 ::ItemStack const& item,
333 int fallbackFrame,
334 ushort& heightOut,
335 ushort& widthOut
336 );
337
338 MCAPI static bool canTessellateAsBlockItem(::ItemStack const& item);
339 // NOLINTEND
340
341public:
342 // constructor thunks
343 // NOLINTBEGIN
344 MCAPI void* $ctor(
345 ::IClientInstance& client,
346 ::BlockTessellator& commonRenderer,
347 ::std::shared_ptr<::mce::TextureGroup> textureGroup
348 );
349 // NOLINTEND
350};
Definition ActorShaderManager.h:5
Definition Actor.h:114
Definition BannerBlockActor.h:21
Definition BaseActorRenderContext.h:5
Definition Connector.h:15
Definition BlockTessellator.h:5
Definition BlockType.h:79
Definition Block.h:42
Definition ConduitBlockActor.h:20
Definition DecoratedPotBlockActor.h:23
Definition IClientInstance.h:5
Definition ItemInHandRenderer.h:5
Definition ItemRenderCall.h:5
Definition ItemStack.h:24
Definition Level.h:253
Definition Matrix.h:10
Definition Mob.h:55
Definition Player.h:129
Definition SerializedActorBlockActor.h:26
Definition Tessellator.h:5
Definition TextureTessellator.h:5
Definition TextureGroup.h:7
Definition Brightness.h:8
Definition ItemInHandRenderer.h:23
Definition ItemInHandRenderer.h:13
Definition MatrixStack.h:13
Definition RenderMetadata.h:7
Definition FrameLightingModelCapabilities.h:7