LeviLamina
Loading...
Searching...
No Matches
SkinnedMeshGroup.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/renderer/controller/RenderController.h"
7
8// auto generated forward declare list
9// clang-format off
11class ExpressionNode;
13class Matrix;
14class ModelPart;
15class RenderParams;
16class ScreenContext;
17class SkinnedMesh;
18struct MERSUniformData;
19namespace dragon { struct RenderMetadata; }
20// clang-format on
21
22class SkinnedMeshGroup {
23public:
24 // member variables
25 // NOLINTBEGIN
26 ::ll::TypedStorage<8, 64, ::std::unordered_map<::RenderController const*, ::ExpressionNode>> mMaterialExpressionMap;
27 ::ll::TypedStorage<1, 1, bool> mShouldDrawThisFrame;
28 ::ll::TypedStorage<1, 1, bool> mIsUniqueGroup;
29 ::ll::TypedStorage<4, 4, int> mSkinnedMeshGroupIdentifier;
30 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::SkinnedMesh>>> mSkinnedMeshes;
31 // NOLINTEND
32
33public:
34 // prevent constructor by default
35 SkinnedMeshGroup();
36
37public:
38 // member functions
39 // NOLINTBEGIN
40 MCAPI SkinnedMeshGroup(
41 ::ModelPart& modelPart,
42 int skinnedMeshGroupIdentifier,
43 bool isUniqueGroup,
44 uint64 skinnedMeshGroupIndex
45 );
46
47 MCAPI ::MaterialVariants const&
48 _evalMaterialVarants(::RenderParams& renderParams, ::RenderController const* renderController);
49
50 MCAPI void clear();
51
52 MCAPI void copyBoneMatrixToSkinnedMesh(
53 int meshIndex,
54 int partIndex,
55 bool isVisible,
56 ::Matrix const& matrix,
57 int vertexCount,
58 ::std::optional<::glm::mat4x4> previousMatrix
59 );
60
61 MCAPI void dataDrivenDraw(
62 ::RenderParams& renderParams,
63 ::dragon::RenderMetadata const& renderMetadata,
64 ::gsl::not_null<::RenderController const*> renderController,
65 ::ClientPBRTextureData const& textureData,
66 ::std::optional<::MERSUniformData> const& mersUniforms
67 );
68
69 MCAPI void draw(
70 ::ScreenContext& screenContext,
71 ::dragon::RenderMetadata const& renderMetadata,
72 ::MaterialVariants const& modelMaterialVariants,
73 ::ClientPBRTextureData const& textureData,
74 ::std::optional<::MERSUniformData> const& mersUniforms
75 );
76
77 MCAPI bool
78 isMaterialExpressionMapEqual(::std::unordered_map<::RenderController const*, ::ExpressionNode> const& rhs) const;
79
80 MCAPI void prepareSkinning();
81
82 MCAPI void registerPart(::ModelPart& part, int groupIndex);
83
84 MCAPI void setMaterialExpression(::RenderController const* renderControllerId, ::ExpressionNode const& expression);
85
86 MCAPI ~SkinnedMeshGroup();
87 // NOLINTEND
88
89public:
90 // static functions
91 // NOLINTBEGIN
92 MCFOLD static uint64 getMaxBoneCount();
93 // NOLINTEND
94
95public:
96 // constructor thunks
97 // NOLINTBEGIN
98 MCAPI void*
99 $ctor(::ModelPart& modelPart, int skinnedMeshGroupIdentifier, bool isUniqueGroup, uint64 skinnedMeshGroupIndex);
100 // NOLINTEND
101
102public:
103 // destructor thunk
104 // NOLINTBEGIN
105 MCAPI void $dtor();
106 // NOLINTEND
107};
Definition ClientPBRTextureData.h:5
Definition ExpressionNode.h:36
Definition MaterialVariants.h:8
Definition Matrix.h:10
Definition ModelPart.h:5
Definition RenderParams.h:30
Definition ScreenContext.h:5
Definition SkinnedMeshGroup.h:5
Definition SkinnedMesh.h:5
Definition MERSUniformData.h:5
Definition RenderMetadata.h:7