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
9// auto generated forward declare list
10// clang-format off
11class Actor;
16class BlockPos;
17class BlockSource;
18class CompoundTag;
19class DataLoadHelper;
21class EntityContext;
22class Experiments;
24class Level;
25class LevelChunk;
26class Vec2;
27class Vec3;
29struct ActorFactoryData;
30struct ActorInfo;
31// clang-format on
32
33class ActorFactory {
34public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::Level>> mLevel;
38 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IEntityInitializer>> mEntityInitializer;
39 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ActorDefinitionGroup>> mDefinitions;
40 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::ActorFactoryData>> mFactoryFunctions;
41 ::ll::TypedStorage<8, 16, ::std::set<::std::string>> mExperimentalEntities;
42 ::ll::TypedStorage<8, 24, ::std::vector<::ActorFactoryData>> mVanillaActors;
43 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorComponentFactory>> mComponentFactory;
44 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorGoalFactory>> mGoalFactory;
45 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorMigratedDefinitionFactory>> mActorMigratedFactory;
46 // NOLINTEND
47
48public:
49 // prevent constructor by default
50 ActorFactory();
51
52public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~ActorFactory() = default;
56 // NOLINTEND
57
58public:
59 // member functions
60 // NOLINTBEGIN
61 MCAPI ActorFactory(::Bedrock::NotNullNonOwnerPtr<::Level> level, ::Experiments const& experiments);
62
63 MCAPI void _buildSummonableActorList(
64 ::Experiments const& experiments,
65 ::std::function<void(::std::string const&, ::ActorFactoryData const&)> callback
66 ) const;
67
68 MCAPI ::OwnerPtr<::EntityContext> _constructActor(
69 ::ActorDefinitionIdentifier const& identifier,
70 ::Vec3 const& position,
71 ::Vec2 const& rotation,
72 ::std::vector<::std::string> const* previousDefinitions
73 ) const;
74
75 MCAPI void _loadDefinitionGroups(::ActorDefinitionGroup* group);
76
77 MCAPI void _loadDefinitionsHelper();
78
79 MCAPI void applyEntityInitializer(::std::unique_ptr<::Actor> actor, ::EntityContext& entity) const;
80
81 MCAPI ::OwnerPtr<::EntityContext> clientCreateDisplayActor(
82 ::ActorDefinitionIdentifier const& identifier,
83 ::Actor* spawner,
84 ::Vec3 const& position,
85 ::Vec2 const& rotation
86 );
87
88 MCAPI ::OwnerPtr<::EntityContext> createActor(
89 ::std::string const& method,
90 ::ActorDefinitionIdentifier const& identifier,
91 ::Actor* spawner,
92 ::Vec3 const& position,
93 ::Vec2 const& rotation
94 );
95
96 MCAPI ::OwnerPtr<::EntityContext> createBornActor(::ActorDefinitionIdentifier const& identifier, ::Actor* parent);
97
98 MCAPI ::OwnerPtr<::EntityContext>
99 createBornActor(::ActorDefinitionIdentifier const& identifier, ::BlockPos const& pos);
100
101 MCAPI ::OwnerPtr<::EntityContext> createSpawnedActor(
102 ::ActorDefinitionIdentifier const& identifier,
103 ::Actor* spawner,
104 ::Vec3 const& position,
105 ::Vec2 const& rotation
106 );
107
108 MCAPI ::OwnerPtr<::EntityContext>
109 createTransformedActor(::ActorDefinitionIdentifier const& identifier, ::Actor* from);
110
111#ifdef LL_PLAT_C
112 MCAPI void digestIdentifierListFromServer(::std::vector<::ActorInfo> const& identifierList);
113#endif
114
115 MCAPI void init(::Experiments const& experiments);
116
117 MCAPI ::OwnerPtr<::EntityContext> loadActor(
118 ::CompoundTag* tag,
119 ::DataLoadHelper& dataLoadHelper,
120 ::DimensionHeightRange const& heightRange,
121 ::LevelChunk const* levelChunk
122 );
123
124 MCAPI void setVanillaActors(::std::vector<::ActorFactoryData> vanillaActors);
125 // NOLINTEND
126
127public:
128 // static functions
129 // NOLINTBEGIN
130#ifdef LL_PLAT_C
131 MCAPI static void fillFactoryData(
132 ::ActorDefinitionIdentifier const& identifier,
133 ::ActorDefinitionIdentifier const& baseIdentifier,
134 ::std::unordered_map<::std::string, ::ActorFactoryData> const& factoryFunctions,
136 );
137#endif
138
139 MCAPI static ::Actor* fixLegacyEntity(::BlockSource& region, ::CompoundTag const* tag);
140 // NOLINTEND
141
142public:
143 // constructor thunks
144 // NOLINTBEGIN
145 MCAPI void* $ctor(::Bedrock::NotNullNonOwnerPtr<::Level> level, ::Experiments const& experiments);
146 // NOLINTEND
147};
Definition ActorComponentFactory.h:13
Definition ActorDefinitionGroup.h:32
Definition ActorGoalFactory.h:8
Definition ActorMigratedDefinitionFactory.h:41
Definition Actor.h:114
Definition BlockPos.h:21
Definition BlockSource.h:71
Definition CompoundTag.h:18
Definition DataLoadHelper.h:20
Definition DimensionHeightRange.h:5
Definition EntityContext.h:15
Definition Experiments.h:10
Definition IEntityInitializer.h:11
Definition LevelChunk.h:75
Definition Level.h:253
Definition Vec2.h:5
Definition Vec3.h:10
Definition ActorDefinitionIdentifier.h:15
Definition ActorFactoryData.h:16
Definition ActorInfo.h:13