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/InHandUpdateType.h"
16#include "mc/world/item/ItemStack.h"
17#include "mc/world/level/block/BlockShape.h"
18
19// auto generated forward declare list
20// clang-format off
21class Actor;
24class Block;
26class BlockType;
29class IClientInstance;
30class ItemRenderCall;
31class Level;
32class Mob;
33class Player;
35class Tessellator;
37class Vec3;
38struct Brightness;
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 float heldItemScale,
184 bool posAndRotSetByJSON
185 );
186
187 MCAPI void _applyMainhandItemTransforms(
188 ::BaseActorRenderContext& renderContext,
189 ::Player& player,
191 float frameAlpha,
192 bool matrixSetFromJson,
193 bool useBlockTransforms
194 );
195
196 MCAPI void _applyOffhandItemTransforms(
197 ::BaseActorRenderContext& renderContext,
198 ::ItemRenderCall const* renderObjectCall,
199 ::Player& player,
201 float frameAlpha,
202 bool matrixSetFromJson,
203 ::ItemContextFlags itemFlags
204 );
205
206 MCAPI void _applyUseAnimation(
207 ::BaseActorRenderContext& renderContext,
208 ::Player& player,
210 float frameAlpha
211 );
212
213 MCAPI bool _areNotMatchingChemistrySticks(::ItemStack& itemBefore, ::ItemStack const& itemAfter);
214
215 MCAPI ::Vec3
216 _calculateOffhandWorldTranslation(::Player const& player, ::BaseActorRenderContext const& renderContext) const;
217
218 MCAPI ::InHandUpdateType _checkAndUpdateIfItemChanged(
219 ::ItemStack& itemBefore,
220 ::ItemStack const& itemAfter,
221 bool isMainHand,
222 bool slotChanged
223 );
224
225 MCAPI ::ItemRenderCall* _getRenderCall(::Mob* mob, ::ItemStack const& itemInstance, int fallbackFrame);
226
227 MCAPI void _pushSparklerParticles(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Level& level);
228
229 MCAPI ::ItemRenderCall&
230 _rebuildItem(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int fallbackFrame);
231
232 MCAPI void _renderBannerBlockItem(
233 ::BaseActorRenderContext& renderContext,
234 ::dragon::RenderMetadata renderMetadata,
235 ::ItemStack const& item,
236 ::Actor& entity,
237 ::Brightness lightEmission,
238 ::std::optional<::glm::vec3> const& lightEmissionColor,
239 float frameAlpha,
240 float scale
241 ) const;
242
243 MCAPI void _renderChestBlockItem(
244 ::BaseActorRenderContext& renderContext,
245 ::dragon::RenderMetadata renderMetadata,
246 ::BlockType const* blockType,
247 ::Actor& entity,
248 bool isInHandItem
249 ) const;
250
251 MCAPI void _renderConduitBlockItem(
252 ::BaseActorRenderContext& renderContext,
253 ::dragon::RenderMetadata renderMetadata,
254 ::Actor& entity,
255 ::Brightness lightEmission,
256 ::std::optional<::glm::vec3> const& lightEmissionColor,
257 float frameAlpha
258 ) const;
259
260 MCAPI void _renderCopperGolemStatueBlockItem(
261 ::BaseActorRenderContext& renderContext,
262 ::dragon::RenderMetadata renderMetadata,
263 ::ItemStack const& item,
264 ::Actor& entity,
265 bool isFirstPerson,
266 bool isInHandItem
267 ) const;
268
269 MCAPI void _renderDecoratedPotBlockItem(
270 ::BaseActorRenderContext& renderContext,
271 ::dragon::RenderMetadata renderMetadata,
272 ::ItemStack const& item,
273 ::Actor& entity,
274 bool isFirstPerson
275 ) const;
276
277 MCAPI void _renderDynamicTexturedItemInHands(
278 ::BaseActorRenderContext& renderContext,
279 ::Player& player,
280 float xRot,
281 float inverseArmHeight,
282 float attackValue
283 );
284
285 MCAPI void _renderFirstPersonHandsAndAttachables(::BaseActorRenderContext& renderContext, ::Player& player);
286
287 MCAPI void
288 _renderFishingRod(::BaseActorRenderContext& renderContext, ::ItemStack const& item, ::Actor& entity) const;
289
290 MCAPI void _renderGlowstickBlockItem(
291 ::BaseActorRenderContext& renderContext,
292 ::dragon::RenderMetadata renderMetadata,
293 ::ItemStack const& item,
294 ::Actor& entity,
295 ::Brightness lightEmission,
296 ::std::optional<::glm::vec3> const& lightEmissionColor,
297 float frameAlpha,
298 ::ItemContextFlags itemFlags,
299 float scale
300 );
301
302 MCAPI void _renderItemInMainHand(
303 ::BaseActorRenderContext& renderContext,
304 ::Player& player,
305 float xRot,
306 float inverseArmHeight,
307 float attackValue
308 );
309
310 MCAPI void _renderItemInOffhand(
311 ::BaseActorRenderContext& renderContext,
312 ::Player& player,
313 float xRot,
314 float inverseArmHeight,
315 float attackValue
316 );
317
318 MCAPI void _renderMiniMapHand(::BaseActorRenderContext& renderContext, ::Player& player, bool inOffhand);
319
320 MCAPI void
321 _renderPhotoMapItem(::BaseActorRenderContext& renderContext, ::Player& player, float frameAlpha, bool isMainHand);
322
323 MCAPI void _renderShulkerBoxBlockItem(
324 ::BaseActorRenderContext& renderContext,
325 ::dragon::RenderMetadata renderMetadata,
326 ::ItemStack const& item,
327 ::Actor& entity,
328 ::Brightness lightEmission,
329 ::std::optional<::glm::vec3> const& lightEmissionColor,
330 float frameAlpha
331 ) const;
332
333 MCAPI void _renderSkullBlockItem(
334 ::BaseActorRenderContext& renderContext,
335 ::dragon::RenderMetadata renderMetadata,
336 ::ItemStack const& item,
337 ::Actor& entity,
338 ::Brightness lightEmission,
339 ::std::optional<::glm::vec3> const& lightEmissionColor,
340 float frameAlpha
341 ) const;
342
343 MCAPI bool _shouldRenderOffhandItem(::Player& player) const;
344
345 MCAPI void _tessellateBlockItem(::Tessellator& tessellator, ::BlockTessellator& t, ::Block const& block);
346
347 MCAPI void _tessellateTextureItem(
348 ::BaseActorRenderContext& renderContext,
349 ::TextureTessellator& textureTessellator,
350 ::Mob* mob,
351 ::ItemStack const& item,
352 int fallbackFrame,
353 ushort& heightOut,
354 ushort& widthOut
355 );
356
357 MCAPI void _transformOffhandItem(::MatrixStack::MatrixStackRef& worldMatrix);
358
359 MCAPI void _transformOffhandTool(::MatrixStack::MatrixStackRef& worldMatrix, ::ItemStack const& item, float a);
360
361 MCAPI void _transformWorldMatrixFromJson(
363 ::ItemStack const& item,
364 bool isMainHand,
365 ::ItemContextFlags itemFlags,
366 float textureScale
367 );
368
369 MCAPI void clearRenderObjects();
370
371 MCAPI ::mce::MaterialPtr const&
372 getObjectMaterial(::ItemRenderCall const& renderObject, ::ItemContextFlags itemFlags) const;
373
374 MCAPI ::ItemRenderCall const&
375 getRenderCallAtFrame(::BaseActorRenderContext& renderContext, ::ItemStack const& item, int frame);
376
377 MCAPI void initMaterials(::std::shared_ptr<::mce::TextureGroup> textureGroup);
378
379 MCAPI void registerPauseManagerCallback(::Bedrock::PubSub::Connector<void(bool)>& connector);
380
381 MCAPI void renderFirstPerson(::BaseActorRenderContext& renderContext, ::ItemContextFlags itemFlags);
382
383 MCAPI void renderItem(
384 ::BaseActorRenderContext& renderContext,
385 ::Actor& entity,
386 ::ItemStack const& item,
387 bool posAndRotSetByJSON,
388 ::ItemContextFlags itemFlags,
389 bool useMatrixAsIs,
390 bool renderingMainHand
391 );
392
393 MCAPI void renderItemNew(
394 ::BaseActorRenderContext& renderContext,
395 ::Actor& entity,
396 ::ItemStack const& item,
397 ::ItemContextFlags itemFlags,
398 ::Brightness lightEmission
399 );
400
401 MCAPI void
402 renderMainhandItem(::BaseActorRenderContext& renderContext, ::Player& player, ::ItemContextFlags itemFlags);
403
404 MCAPI void renderObject(
405 ::BaseActorRenderContext& renderContext,
406 ::ItemRenderCall const& renderObject,
407 ::dragon::RenderMetadata const& renderMetadata,
408 ::ItemContextFlags itemFlags
409 );
410
411 MCAPI void
412 renderOffhandItem(::BaseActorRenderContext& renderContext, ::Player& player, ::ItemContextFlags itemFlags);
413
414 MCAPI void
415 tessellateAtFrame(::BaseActorRenderContext& renderContext, ::Mob* mob, ::ItemStack const& item, int frame);
416
417 MCAPI void tick();
418 // NOLINTEND
419
420public:
421 // static functions
422 // NOLINTBEGIN
423 MCAPI static ::dragon::RenderMetadata _createRenderMetadata(
424 ::BaseActorRenderContext const& renderContext,
425 ::Actor const& entity,
426 ::ItemStack const& item
427 );
428
429 MCAPI static bool canTessellateAsBlockItem(::ItemStack const& item);
430
431 MCAPI static void computeMatrixForDynamicTexturedItemInHands(
433 ::mce::ViewportInfo const& viewportInfo,
434 ::mce::Camera const& camera,
435 float xRot,
436 float inverseArmHeight,
437 float attackValue
438 );
439 // NOLINTEND
440
441public:
442 // constructor thunks
443 // NOLINTBEGIN
444 MCAPI void* $ctor(
445 ::IClientInstance& client,
446 ::BlockTessellator& commonRenderer,
447 ::std::shared_ptr<::mce::TextureGroup> textureGroup
448 );
449 // NOLINTEND
450
451public:
452 // destructor thunk
453 // NOLINTBEGIN
454 MCAPI void $dtor();
455 // NOLINTEND
456
457public:
458 // vftables
459 // NOLINTBEGIN
460 MCNAPI static void** $vftable();
461 // NOLINTEND
462};
Definition ActorShaderManager.h:5
Definition Actor.h:106
Definition BannerBlockActor.h:22
Definition BaseActorRenderContext.h:5
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 ItemRenderCall.h:5
Definition ItemStack.h:26
Definition Level.h:250
Definition Mob.h:51
Definition Player.h:129
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 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 MatrixStack.h:16
Definition RenderMetadata.h:7
Definition ViewportInfo.h:7