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