LeviLamina
Loading...
Searching...
No Matches
ActorDefinitionGroup.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/debug/log/LogArea.h"
7#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/puv/puv_load_data/LoadResultWithTiming.h"
10#include "mc/world/actor/ActorDefinitionPtr.h"
11#include "mc/world/level/storage/Experiments.h"
12
13// auto generated forward declare list
14// clang-format off
16class ActorDefinition;
18class Level;
20class PackLoadContext;
22class SemVersion;
23namespace Json { class Value; }
24// clang-format on
25
26class ActorDefinitionGroup : public ::Bedrock::EnableNonOwnerReferences {
27public:
28 // ActorDefinitionGroup inner types declare
29 // clang-format off
30 struct EDLWrapper;
31 struct LoadActorResult;
32 // clang-format on
33
34 // ActorDefinitionGroup inner types define
35 enum class LoadStatus : int {
36 Success = 0,
37 FailedToParseIdentifier = 1,
38 InvalidNamespaceInIdentifier = 2,
39 DefinitionAlreadyDefined = 3,
40 FailedToLoadFromJSON = 4,
41 InvalidIdentifier = 5,
42 };
43
44 struct EDLWrapper {
45 public:
46 // member variables
47 // NOLINTBEGIN
48 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::ActorDefinition>>> mList;
49 // NOLINTEND
50 };
51
53 public:
54 // member variables
55 // NOLINTBEGIN
56 ::ll::TypedStorage<4, 4, ::ActorDefinitionGroup::LoadStatus> mLoadStatus;
57 ::ll::TypedStorage<8, 32, ::std::string> mActorId;
58 ::ll::TypedStorage<1, 1, bool> mIsVanillaOverride;
59 ::ll::TypedStorage<8, 32, ::PuvLoadData::LoadResultWithTiming> mLoadTime;
60 // NOLINTEND
61 };
62
63public:
64 // member variables
65 // NOLINTBEGIN
66 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ActorDefinitionPtr*>> mRegisteredPtrs;
67 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::ActorDefinition>>> mDefinitions;
68 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::ActorDefinitionGroup::EDLWrapper>> mTemplateMap;
69 ::ll::TypedStorage<8, 8, ::ResourcePackManager&> mResourcePackManager;
70 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::LinkedAssetValidator>> mLinkedAssetValidator;
71 ::ll::TypedStorage<8, 80, ::std::mutex> mReferenceMutex;
72 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
73 ::ll::TypedStorage<8, 8, ::ActorComponentFactory*> mComponentFactory;
74 ::ll::TypedStorage<8, 72, ::Experiments> mExperiments;
75 // NOLINTEND
76
77public:
78 // prevent constructor by default
79 ActorDefinitionGroup& operator=(ActorDefinitionGroup const&);
80 ActorDefinitionGroup(ActorDefinitionGroup const&);
81 ActorDefinitionGroup();
82
83public:
84 // virtual functions
85 // NOLINTBEGIN
86 virtual ~ActorDefinitionGroup() /*override*/ = default;
87 // NOLINTEND
88
89public:
90 // member functions
91 // NOLINTBEGIN
92 MCAPI ActorDefinitionGroup(
93 ::Level& level,
94 ::ResourcePackManager& resourcePackManager,
95 ::IMinecraftEventing& eventing,
96 ::Experiments const& experiments,
98 );
99
100#ifdef LL_PLAT_S
101 MCAPI void _addRef(::ActorDefinitionPtr& ptr);
102#endif
103
104 MCAPI ::ActorDefinitionGroup::LoadActorResult _loadActorDefinition(
105 ::Level& level,
106 ::PackLoadContext& packLoadContext,
107 ::std::string const& relativeResourceFilepath,
108 ::Json::Value& root,
109 ::std::unordered_set<::std::string>& definitions,
110 ::LogArea logArea
111 );
112
113 MCAPI ::std::vector<::std::string> buildActorEventList() const;
114
115 MCAPI ::ActorDefinitionPtr tryGetDefinition(::std::string const& definitionId);
116
117 MCAPI ::ActorDefinitionPtr tryGetDefinitionGroup(::std::string const& base, ::std::string const& definitionId);
118 // NOLINTEND
119
120public:
121 // static functions
122 // NOLINTBEGIN
123 MCAPI static void _setupCommonResourceDefinitionMap(::ActorDefinition& def, ::Level& level);
124
125#ifdef LL_PLAT_C
126 MCAPI static void loadActorDefinitionFormatVersion(::Json::Value& root, ::SemVersion& formatVersion);
127
128 MCAPI static bool loadActorDefinitionIdentifier(
129 ::Json::Value const& root,
130 ::SemVersion const& formatVersion,
131 ::std::string& identifier
132 );
133#endif
134 // NOLINTEND
135
136public:
137 // constructor thunks
138 // NOLINTBEGIN
139 MCAPI void* $ctor(
140 ::Level& level,
141 ::ResourcePackManager& resourcePackManager,
142 ::IMinecraftEventing& eventing,
143 ::Experiments const& experiments,
145 );
146 // NOLINTEND
147};
Definition ActorComponentFactory.h:13
Definition ActorDefinitionPtr.h:11
Definition ActorDefinition.h:80
Definition EnableNonOwnerReferences.h:7
Definition NonOwnerPointer.h:9
Definition Experiments.h:14
Definition IMinecraftEventing.h:147
Definition Value.h:16
Definition Level.h:254
Definition LinkedAssetValidator.h:8
Definition PackLoadContext.h:20
Definition ResourcePackManager.h:36
Definition SemVersion.h:15
Definition ActorDefinitionGroup.h:44
Definition ActorDefinitionGroup.h:52