LeviLamina
Loading...
Searching...
No Matches
ActorFactory.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/game_refs/OwnerPtr.h"
8#include "mc/world/actor/ActorType.h"
9
10// auto generated forward declare list
11// clang-format off
12class Actor;
17class BlockPos;
18class BlockSource;
19class CompoundTag;
20class DataLoadHelper;
22class EntityContext;
23class Experiments;
25class Level;
26class LevelChunk;
27class Vec2;
28class Vec3;
30struct ActorFactoryData;
31struct ActorInfo;
32// clang-format on
33
34class ActorFactory {
35public:
36 // member variables
37 // NOLINTBEGIN
38 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::Level>> mLevel;
39 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IEntityInitializer>> mEntityInitializer;
40 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ActorDefinitionGroup>> mDefinitions;
41 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::ActorFactoryData>> mFactoryFunctions;
42 ::ll::TypedStorage<8, 16, ::std::set<::std::string>> mExperimentalEntities;
43 ::ll::TypedStorage<8, 24, ::std::vector<::ActorFactoryData>> mVanillaActors;
44 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorComponentFactory>> mComponentFactory;
45 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorGoalFactory>> mGoalFactory;
46 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorMigratedDefinitionFactory>> mActorMigratedFactory;
47 // NOLINTEND
48
49public:
50 // prevent constructor by default
51 ActorFactory();
52
53public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ~ActorFactory();
57 // NOLINTEND
58
59public:
60 // member functions
61 // NOLINTBEGIN
62 MCAPI ActorFactory(::Bedrock::NotNullNonOwnerPtr<::Level> level, ::Experiments const& experiments);
63
64 MCAPI void _buildSummonableActorList(
65 ::Experiments const& experiments,
66 ::std::function<void(::std::string const&, ::ActorFactoryData const&)> callback
67 ) const;
68
69 MCAPI ::OwnerPtr<::EntityContext> _constructActor(
70 ::ActorDefinitionIdentifier const& identifier,
71 ::Vec3 const& position,
72 ::Vec2 const& rotation,
73 ::std::vector<::std::string> const* previousDefinitions
74 ) const;
75
76 MCAPI void _loadDefinitionGroups(::ActorDefinitionGroup* group);
77
78 MCAPI void _loadDefinitionsHelper();
79
80 MCAPI bool _validateActorData(
81 ::CompoundTag& tag,
82 ::ActorDefinitionIdentifier& outDefinition,
83 ::Vec3& outPosition,
84 ::LevelChunk const* levelChunk
85 ) const;
86
87 MCAPI void applyEntityInitializer(::std::unique_ptr<::Actor> actor, ::EntityContext& entity) const;
88
89 MCAPI ::std::vector<::std::pair<::std::string, ::ActorDefinitionIdentifier const*>>
90 buildSummonEntityTypeEnum(::Experiments const& experiments) const;
91
92 MCAPI void clearDefinitionGroup();
93
94 MCAPI ::OwnerPtr<::EntityContext> clientCreateDisplayActor(
95 ::ActorDefinitionIdentifier const& identifier,
96 ::Actor* spawner,
97 ::Vec3 const& position,
98 ::Vec2 const& rotation
99 );
100
101 MCAPI ::OwnerPtr<::EntityContext> createActor(
102 ::std::string const& method,
103 ::ActorDefinitionIdentifier const& identifier,
104 ::Actor* spawner,
105 ::Vec3 const& position,
106 ::Vec2 const& rotation
107 );
108
109 MCAPI ::OwnerPtr<::EntityContext> createBornActor(::ActorDefinitionIdentifier const& identifier, ::Actor* parent);
110
111 MCAPI ::OwnerPtr<::EntityContext>
112 createBornActor(::ActorDefinitionIdentifier const& identifier, ::BlockPos const& pos);
113
114 MCAPI ::OwnerPtr<::EntityContext> createSpawnedActor(
115 ::ActorDefinitionIdentifier const& identifier,
116 ::Actor* spawner,
117 ::Vec3 const& position,
118 ::Vec2 const& rotation
119 );
120
121 MCAPI ::OwnerPtr<::EntityContext>
122 createSummonedActor(::ActorDefinitionIdentifier const& identifier, ::Actor* spawner, ::Vec3 const& position);
123
124 MCAPI ::OwnerPtr<::EntityContext>
125 createTransformedActor(::ActorDefinitionIdentifier const& identifier, ::Actor* from);
126
127#ifdef LL_PLAT_C
128 MCAPI void digestIdentifierListFromServer(::std::vector<::ActorInfo> const& identifierList);
129
130 MCAPI ::std::vector<::std::string> generateActorIdentifierList() const;
131#endif
132
133 MCFOLD ::ActorGoalFactory& getGoalFactory();
134
135 MCFOLD ::ActorMigratedDefinitionFactory& getMigratedDefinitionFactory();
136
137 MCAPI void init(::Experiments const& experiments);
138
139 MCAPI ::OwnerPtr<::EntityContext> loadActor(::CompoundTag* tag, ::DataLoadHelper& dataLoadHelper);
140
141 MCAPI ::OwnerPtr<::EntityContext>
142 loadActor(::CompoundTag* tag, ::DataLoadHelper& dataLoadHelper, ::DimensionHeightRange const& heightRange);
143
144 MCAPI ::OwnerPtr<::EntityContext> loadActor(
145 ::CompoundTag* tag,
146 ::DataLoadHelper& dataLoadHelper,
147 ::DimensionHeightRange const& heightRange,
148 ::LevelChunk const* levelChunk
149 );
150
151 MCAPI ::ActorType lookupEntityType(::ActorDefinitionIdentifier const& identifier) const;
152
153 MCAPI void setDefinitionGroup(::ActorDefinitionGroup* group);
154
155 MCFOLD void setEntityInitializer(::std::shared_ptr<::IEntityInitializer> entityInitializer);
156
157 MCAPI void setVanillaActors(::std::vector<::ActorFactoryData> vanillaActors);
158 // NOLINTEND
159
160public:
161 // static functions
162 // NOLINTBEGIN
163 MCAPI static void fillFactoryData(
164 ::ActorDefinitionIdentifier const& identifier,
165 ::ActorDefinitionIdentifier const& baseIdentifier,
166 ::std::unordered_map<::std::string, ::ActorFactoryData> const& factoryFunctions,
168 );
169
170 MCAPI static ::Actor* fixLegacyEntity(::BlockSource& region, ::CompoundTag const* tag);
171 // NOLINTEND
172
173public:
174 // constructor thunks
175 // NOLINTBEGIN
176 MCAPI void* $ctor(::Bedrock::NotNullNonOwnerPtr<::Level> level, ::Experiments const& experiments);
177 // NOLINTEND
178
179public:
180 // destructor thunk
181 // NOLINTBEGIN
182 MCAPI void $dtor();
183 // NOLINTEND
184
185public:
186 // vftables
187 // NOLINTBEGIN
188 MCNAPI static void** $vftable();
189 // NOLINTEND
190};
Definition ActorComponentFactory.h:13
Definition ActorDefinitionGroup.h:37
static MCAPI void ** $vftable()
Definition ActorGoalFactory.h:8
Definition ActorMigratedDefinitionFactory.h:42
Definition Actor.h:125
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition CompoundTag.h:23
Definition DataLoadHelper.h:20
Definition DimensionHeightRange.h:5
Definition EntityContext.h:17
Definition Experiments.h:14
Definition IEntityInitializer.h:11
Definition LevelChunk.h:87
Definition Level.h:255
Definition Vec2.h:5
Definition Vec3.h:10
Definition ActorDefinitionIdentifier.h:15
Definition ActorFactoryData.h:16
Definition ActorInfo.h:13