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/deps/core/math/Matrix.h"
8#include "mc/deps/core/utility/pub_sub/Connector.h"
9#include "mc/deps/core/utility/pub_sub/Subscription.h"
10#include "mc/deps/minecraft_renderer/game/ItemContextFlags.h"
11#include "mc/deps/minecraft_renderer/renderer/MaterialPtr.h"
12#include "mc/deps/minecraft_renderer/renderer/TexturePtr.h"
13#include "mc/deps/renderer/MatrixStack.h"
14#include "mc/world/item/InHandUpdateType.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 Level;
30class Mob;
31class Player;
33class Tessellator;
35class Vec3;
36struct Brightness;
38struct ItemRenderCall;
39namespace dragon { struct RenderMetadata; }
40namespace mce { class Camera; }
41namespace mce { class TextureGroup; }
42namespace mce { struct ViewportInfo; }
43// clang-format on
44
46public:
47 // ItemInHandRenderer inner types declare
48 // clang-format off
50 // clang-format on
51
52 // ItemInHandRenderer inner types define
54 public:
55 // OffsetForLowAspectRatio inner types declare
56 // clang-format off
57 struct Scoped;
58 // clang-format on
59
60 // OffsetForLowAspectRatio inner types define
61 enum class Direction : uchar {
62 Left = 0,
63 Right = 1,
64 };
65
66 struct Scoped {
67 public:
68 // member variables
69 // NOLINTBEGIN
70 ::ll::UntypedStorage<1, 1> mUnk8b3a1f;
71 ::ll::UntypedStorage<8, 8> mUnkad04bd;
72 ::ll::UntypedStorage<8, 8> mUnk711535;
73 ::ll::UntypedStorage<8, 8> mUnk673c3d;
74 ::ll::UntypedStorage<1, 1> mUnk70d991;
75 ::ll::UntypedStorage<4, 4> mUnk1a7539;
76 ::ll::UntypedStorage<1, 1> mUnkb8460a;
77 // NOLINTEND
78
79 public:
80 // prevent constructor by default
81 Scoped& operator=(Scoped const&);
82 Scoped(Scoped const&);
83 Scoped();
84
85 public:
86 // member functions
87 // NOLINTBEGIN
88 MCNAPI ~Scoped();
89 // NOLINTEND
90
91 public:
92 // destructor thunk
93 // NOLINTBEGIN
94 MCNAPI void $dtor();
95 // NOLINTEND
96 };
97
98 public:
99 // static functions
100 // NOLINTBEGIN
101 MCNAPI static bool apply(
102 ::ItemInHandRenderer::OffsetForLowAspectRatio::Direction direction,
104 ::mce::ViewportInfo const& viewportInfo,
105 ::mce::Camera const& camera,
106 bool isFirstPerson,
107 float xScale
108 );
109 // NOLINTEND
110 };
111
112 using RenderMap = ::std::map<::ItemInHandRenderFrameId, ::ItemRenderCall>;
113
114public:
115 // member variables
116 // NOLINTBEGIN
117 ::ll::TypedStorage<8, 152, ::ItemStack> mItem;
118 ::ll::TypedStorage<8, 152, ::ItemStack> mOffHandItem;
119 ::ll::TypedStorage<4, 4, int> mSlot;
120 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
121 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TextureTessellator>> mTextureTessellator;
122 ::ll::TypedStorage<4, 4, float> mHeight;
123 ::ll::TypedStorage<4, 4, float> mOldHeight;
124 ::ll::TypedStorage<4, 4, float> mHeightOffHand;
125 ::ll::TypedStorage<4, 4, float> mOldHeightOffHand;
126 ::ll::TypedStorage<8, 8, ::BlockTessellator&> mBlockTessellator;
127 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlock;
128 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlockColor;
129 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaBlock;
130 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItem;
131 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatBlendBlock;
132 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatBlendBlockNoColor;
133 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaColoredBlock;
134 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItemMultiColorTint;
135 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaOneSidedBlock;
136 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaOneSidedColoredBlock;
137 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatOpaqueBlockGlint;
138 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatAlphaBlockGlint;
139 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatItemGlint;
140 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMatFishingLine;
141 ::ll::TypedStorage<8, 128, ::std::array<::mce::MaterialPtr const*, 16>> mMaterialMatrix;
142 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mGlintTexture;
143 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BannerBlockActor>> mBannerEntity;
144 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DecoratedPotBlockActor>> mDecoratedPotEntity;
145 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SerializedActorBlockActor>> mCopperGolemStatueEntity;
146 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ConduitBlockActor>> mConduitEntity;
147 ::ll::TypedStorage<8, 16, ::std::map<::ItemInHandRenderFrameId, ::ItemRenderCall>> mRenderObjects;
148 ::ll::TypedStorage<4, 64, ::Matrix> mTransform;
149 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPauseStateChange;
150 ::ll::TypedStorage<8, 8, ::std::chrono::duration<double, ::std::ratio<1, 1>>> mTimer;
151 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastTime;
152 ::ll::TypedStorage<1, 1, bool> mIsDeferredEnabled;
153 // NOLINTEND
154
155public:
156 // prevent constructor by default
157 ItemInHandRenderer& operator=(ItemInHandRenderer const&);
158 ItemInHandRenderer(ItemInHandRenderer const&);
159 ItemInHandRenderer();
160
161public:
162 // virtual functions
163 // NOLINTBEGIN
164 virtual ~ItemInHandRenderer() /*override*/;
165 // NOLINTEND
166
167public:
168 // member functions
169 // NOLINTBEGIN
170 MCAPI ItemInHandRenderer(
171 ::IClientInstance& client,
172 ::BlockTessellator& commonRenderer,
173 ::std::shared_ptr<::mce::TextureGroup> textureGroup
174 );
175
176 MCAPI void _applyDefaultItemTransforms(
178 ::ItemStack const& item,
179 bool isInHandItem,
180 ::BlockType const* blockType,
181 ::BlockShape blockShape,
182 ::ItemRenderCall const* renderObjectCall,
183 bool posAndRotSetByJSON
184 );
185
186 MCAPI void _applyMainhandItemTransforms(
187 ::BaseActorRenderContext& renderContext,
188 ::Player& player,
190 float frameAlpha,
191 bool matrixSetFromJson,
192 bool useBlockTransforms
193 );
194
195 MCAPI void _applyOffhandItemTransforms(
196 ::BaseActorRenderContext& renderContext,
197 ::ItemRenderCall const* renderObjectCall,
198 ::Player& player,
200 float frameAlpha,
201 bool matrixSetFromJson,
202 ::ItemContextFlags itemFlags
203 );
204
205 MCAPI void _applyUseAnimation(
206 ::BaseActorRenderContext& renderContext,
207 ::Player& player,
209 float frameAlpha
210 );
211
212 MCAPI bool _areNotMatchingChemistrySticks(::ItemStack& itemBefore, ::ItemStack const& itemAfter);
213
214 MCAPI ::Vec3
215 _calculateOffhandWorldTranslation(::Player const& player, ::BaseActorRenderContext const& renderContext) const;
216
217 MCAPI ::InHandUpdateType _checkAndUpdateIfItemChanged(
218 ::ItemStack& itemBefore,
219 ::ItemStack const& itemAfter,
220 bool isMainHand,
221 bool slotChanged
222 );
223
224 MCAPI ::ItemRenderCall* _getRenderCall(::Mob* mob, ::ItemStack const& itemInstance, int fallbackFrame);
225
226 MCAPI void _pushSparklerParticles(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Level& level);
227
228 MCAPI ::ItemRenderCall&
229 _rebuildItem(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int fallbackFrame);
230
231 MCAPI void _renderBannerBlockItem(
232 ::BaseActorRenderContext& renderContext,
233 ::dragon::RenderMetadata renderMetadata,
234 ::ItemStack const& item,
235 ::Actor& entity,
236 ::Brightness lightEmission,
237 float frameAlpha,
238 float scale
239 ) const;
240
241 MCAPI void _renderChestBlockItem(
242 ::BaseActorRenderContext& renderContext,
243 ::dragon::RenderMetadata renderMetadata,
244 ::BlockType const* blockType,
245 ::Actor& entity,
246 bool isInHandItem
247 ) const;
248
249 MCAPI void _renderConduitBlockItem(
250 ::BaseActorRenderContext& renderContext,
251 ::dragon::RenderMetadata renderMetadata,
252 ::Actor& entity,
253 ::Brightness lightEmission,
254 float frameAlpha
255 ) const;
256
257 MCAPI void _renderCopperGolemStatueBlockItem(
258 ::BaseActorRenderContext& renderContext,
259 ::dragon::RenderMetadata renderMetadata,
260 ::ItemStack const& item,
261 ::Actor& entity,
262 bool isFirstPerson,
263 bool isInHandItem
264 ) const;
265
266 MCAPI void _renderDecoratedPotBlockItem(
267 ::BaseActorRenderContext& renderContext,
268 ::dragon::RenderMetadata renderMetadata,
269 ::ItemStack const& item,
270 ::Actor& entity,
271 bool isFirstPerson
272 ) const;
273
274 MCAPI void _renderDynamicTexturedItemInHands(
275 ::BaseActorRenderContext& renderContext,
276 ::Player& player,
277 float xRot,
278 float inverseArmHeight,
279 float attackValue
280 );
281
282 MCAPI void _renderFirstPersonHandsAndAttachables(::BaseActorRenderContext& renderContext, ::Player& player);
283
284 MCAPI void
285 _renderFishingRod(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Actor& entity) const;
286
287 MCAPI void _renderGlowstickBlockItem(
288 ::BaseActorRenderContext& renderContext,
289 ::dragon::RenderMetadata renderMetadata,
290 ::ItemStack const& item,
291 ::Actor& entity,
292 ::Brightness lightEmission,
293 float frameAlpha,
294 ::ItemContextFlags itemFlags,
295 float scale
296 );
297
298 MCAPI void _renderItemInMainHand(
299 ::BaseActorRenderContext& renderContext,
300 ::Player& player,
301 float xRot,
302 float inverseArmHeight,
303 float attackValue
304 );
305
306 MCAPI void _renderItemInOffhand(
307 ::BaseActorRenderContext& renderContext,
308 ::Player& player,
309 float xRot,
310 float inverseArmHeight,
311 float attackValue
312 );
313
314 MCAPI void _renderMiniMapHand(::BaseActorRenderContext& renderContext, ::Player& player, bool inOffhand);
315
316 MCAPI void
317 _renderPhotoMapItem(::BaseActorRenderContext& renderContext, ::Player& player, float frameAlpha, bool isMainHand);
318
319 MCAPI void _renderShulkerBoxBlockItem(
320 ::BaseActorRenderContext& renderContext,
321 ::dragon::RenderMetadata renderMetadata,
322 ::ItemStack const& item,
323 ::Actor& entity,
324 ::Brightness lightEmission,
325 float frameAlpha
326 ) const;
327
328 MCAPI void _renderSkullBlockItem(
329 ::BaseActorRenderContext& renderContext,
330 ::dragon::RenderMetadata renderMetadata,
331 ::ItemStack const& item,
332 ::Actor& entity,
333 ::Brightness lightEmission,
334 float frameAlpha
335 ) const;
336
337 MCAPI bool _shouldRenderOffhandItem(::Player& player) const;
338
339 MCAPI void _tessellateBlockItem(::Tessellator& tessellator, ::BlockTessellator& t, ::Block const& block);
340
341 MCAPI void _tessellateTextureItem(
342 ::BaseActorRenderContext& renderContext,
343 ::TextureTessellator& textureTessellator,
344 ::Mob* mob,
345 ::ItemStack const& item,
346 int fallbackFrame,
347 ushort& heightOut,
348 ushort& widthOut
349 );
350
351 MCAPI void _transformOffhandItem(::MatrixStack::MatrixStackRef& worldMatrix);
352
353 MCAPI void _transformOffhandTool(::MatrixStack::MatrixStackRef& worldMatrix, ::ItemStack const& item, float a);
354
355 MCAPI void _transformWorldMatrixFromJson(
357 ::ItemStack const& item,
358 bool isMainHand,
359 ::ItemContextFlags itemFlags
360 );
361
362 MCAPI void clearRenderObjects();
363
364 MCAPI ::mce::MaterialPtr const&
365 getObjectMaterial(::ItemRenderCall const& renderObject, ::ItemContextFlags itemFlags) const;
366
367 MCAPI ::ItemRenderCall const&
368 getRenderCallAtFrame(::BaseActorRenderContext& renderContext, ::ItemStack const& item, int frame);
369
370 MCAPI void initMaterials(::std::shared_ptr<::mce::TextureGroup> textureGroup);
371
372 MCAPI void registerPauseManagerCallback(::Bedrock::PubSub::Connector<void(bool)>& connector);
373
374 MCAPI void renderFirstPerson(::BaseActorRenderContext& renderContext, ::ItemContextFlags itemFlags);
375
376 MCAPI void renderItem(
377 ::BaseActorRenderContext& renderContext,
378 ::Actor& entity,
379 ::ItemStack const& item,
380 bool posAndRotSetByJSON,
381 ::ItemContextFlags itemFlags,
382 bool useMatrixAsIs,
383 bool renderingMainHand
384 );
385
386 MCAPI void renderItemNew(
387 ::BaseActorRenderContext& renderContext,
388 ::Actor& entity,
389 ::ItemStack const& item,
390 ::ItemContextFlags itemFlags,
391 ::Brightness lightEmission
392 );
393
394 MCAPI void
395 renderMainhandItem(::BaseActorRenderContext& renderContext, ::Player& player, ::ItemContextFlags itemFlags);
396
397 MCAPI void renderObject(
398 ::BaseActorRenderContext& renderContext,
399 ::ItemRenderCall const& renderObject,
400 ::dragon::RenderMetadata const& renderMetadata,
401 ::ItemContextFlags itemFlags
402 );
403
404 MCAPI void
405 renderOffhandItem(::BaseActorRenderContext& renderContext, ::Player& player, ::ItemContextFlags itemFlags);
406
407 MCAPI void
408 tessellateAtFrame(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int frame);
409
410 MCAPI void tick();
411 // NOLINTEND
412
413public:
414 // static functions
415 // NOLINTBEGIN
416 MCAPI static ::dragon::RenderMetadata _createRenderMetadata(
417 ::BaseActorRenderContext const& renderContext,
418 ::Actor const& entity,
419 ::ItemStack const& item
420 );
421
422 MCAPI static bool canTessellateAsBlockItem(::ItemStack const& item);
423
424 MCAPI static void computeMatrixForDynamicTexturedItemInHands(
426 ::mce::ViewportInfo const& viewportInfo,
427 ::mce::Camera const& camera,
428 float xRot,
429 float inverseArmHeight,
430 float attackValue
431 );
432 // NOLINTEND
433
434public:
435 // constructor thunks
436 // NOLINTBEGIN
437 MCAPI void* $ctor(
438 ::IClientInstance& client,
439 ::BlockTessellator& commonRenderer,
440 ::std::shared_ptr<::mce::TextureGroup> textureGroup
441 );
442 // NOLINTEND
443
444public:
445 // destructor thunk
446 // NOLINTBEGIN
447 MCAPI void $dtor();
448 // NOLINTEND
449
450public:
451 // vftables
452 // NOLINTBEGIN
453 MCNAPI static void** $vftable();
454 // NOLINTEND
455};
Definition ActorShaderManager.h:5
Definition Actor.h:105
Definition BannerBlockActor.h:22
Definition BaseActorRenderContext.h:34
Definition Connector.h:8
Definition BlockTessellator.h:5
Definition BlockType.h:84
Definition Block.h:43
Definition ConduitBlockActor.h:20
Definition DecoratedPotBlockActor.h:23
Definition IClientInstance.h:5
Definition ItemInHandRenderer.h:5
static MCAPI void ** $vftable()
Definition ItemStack.h:26
Definition Level.h:249
Definition Mob.h:50
Definition Player.h:125
Definition SerializedActorBlockActor.h:27
Definition Tessellator.h:5
Definition TextureTessellator.h:5
Definition Vec3.h:10
Definition Camera.h:7
Definition TextureGroup.h:7
Definition Brightness.h:8
Definition ItemInHandRenderFrameId.h:5
Definition ItemInHandRenderer.h:23
Definition ItemInHandRenderer.h:13
static MCAPI bool apply(::ItemInHandRenderer::OffsetForLowAspectRatio::Direction direction, ::MatrixStack::MatrixStackRef &worldMatrix, ::mce::ViewportInfo const &viewportInfo, ::mce::Camera const &camera, bool isFirstPerson, float xScale)
Definition ItemRenderCall.h:5
Definition MatrixStack.h:18
Definition RenderMetadata.h:14
Definition ViewportInfo.h:7