LeviLamina
Loading...
Searching...
No Matches
EntitySystems.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
7#include "mc/deps/core/utility/typeid_t.h"
8#include "mc/deps/ecs/systems/IEntitySystems.h"
9#include "mc/deps/game_refs/OwnerPtr.h"
10#include "mc/deps/profiler/PredeclaredAnnotation.h"
11
12// auto generated forward declare list
13// clang-format off
15class EntityRegistry;
16class ITickingSystem;
20struct SystemCategory;
21struct SystemInfo;
22struct TickingSystemId;
24// clang-format on
25
26class EntitySystems : public ::IEntitySystems, public ::Bedrock::EnableNonOwnerReferences {
27public:
28 // EntitySystems inner types declare
29 // clang-format off
31 struct GameSystemCategory;
32 struct RuntimeInitialize;
35 // clang-format on
36
37 // EntitySystems inner types define
39
41
43
45
47
48 using MovementSystemCategory = ::entt::
49 type_list<::EntitySystems::UsedInServerPlayerMovement, ::EntitySystems::UsedInClientMovementCorrections>;
50
51 using SystemInvokeCallbackFunc = ::std::function<void(::TickingSystemId)>;
52
53 using SystemInvokeCallbackPair =
54 ::std::pair<::std::function<void(::TickingSystemId)>, ::std::function<void(::TickingSystemId)>>;
55
56 using SystemInvokeCallbackSig = void(::TickingSystemId);
57
58public:
59 // member variables
60 // NOLINTBEGIN
61 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PlayerInteractionSystem>> mPlayerInteractionSystem;
62 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IEntitySystemsCollection>> mSystems;
63 ::ll::TypedStorage<8, 16, ::OwnerPtr<::EcsEventDispatcher>> mDispatcher;
64 ::ll::TypedStorage<8, 32, ::std::string> mName;
65 ::ll::TypedStorage<1, 1, bool> mEnableTimingCapture;
66 ::ll::TypedStorage<8, 64, ::std::function<void(::TickingSystemId)>> mPreSystemInvoke;
67 ::ll::TypedStorage<8, 64, ::std::function<void(::TickingSystemId)>> mPostSystemInvoke;
68 ::ll::TypedStorage<8, 8, ::Bedrock::Profiler::details::PredeclaredAnnotation> mTickingAnnotation;
69 // NOLINTEND
70
71public:
72 // prevent constructor by default
73 EntitySystems();
74
75public:
76 // virtual functions
77 // NOLINTBEGIN
78 virtual ~EntitySystems() /*override*/;
79
80 virtual void tickMovementCatchup(::EntityRegistry& registry) /*override*/;
81
82 virtual void tickMovementCorrectionReplay(::EntityRegistry& registry) /*override*/;
83
84 virtual void registerTickingSystem(
85 ::gsl::span<::Bedrock::typeid_t<::SystemCategory> const> categories,
86 ::std::unique_ptr<::ITickingSystem> system,
87 ::SystemInfo const& info,
89 ) /*override*/;
90
91 virtual bool _hasSingleTickCategory(::Bedrock::typeid_t<::SystemCategory> const category) const /*override*/;
92 // NOLINTEND
93
94public:
95 // member functions
96 // NOLINTBEGIN
97 MCAPI EntitySystems(::std::unique_ptr<::IEntitySystemsCollection> systems, ::std::string_view name);
98
99 MCAPI ::std::vector<::gsl::not_null<::SystemInfo const*>>
100 getSystemInfo(::Bedrock::typeid_t<::SystemCategory> const& filter) const;
101
102 MCAPI void registerEditorOnlyTickingSystem(::TickingSystemWithInfo&& system);
103
104#ifdef LL_PLAT_C
105 MCAPI void registerEvents(::EntityRegistry& registry);
106#endif
107
108 MCAPI void registerGameOnlyTickingSystem(::TickingSystemWithInfo&& system);
109
110 MCAPI void registerMovementTickingSystem(::TickingSystemWithInfo&& system);
111
112 MCAPI void registerTickingSystem(::TickingSystemWithInfo&& system);
113
114#ifdef LL_PLAT_C
115 MCAPI ::std::pair<::std::function<void(::TickingSystemId)>, ::std::function<void(::TickingSystemId)>>
116 setSystemInvokeCallbacks(
117 ::std::function<void(::TickingSystemId)>&& preInvoke,
118 ::std::function<void(::TickingSystemId)>&& postInvoke
119 );
120
121 MCAPI void tick(::EntityRegistry& registry);
122#endif
123 // NOLINTEND
124
125public:
126 // constructor thunks
127 // NOLINTBEGIN
128 MCAPI void* $ctor(::std::unique_ptr<::IEntitySystemsCollection> systems, ::std::string_view name);
129 // NOLINTEND
130
131public:
132 // destructor thunk
133 // NOLINTBEGIN
134 MCAPI void $dtor();
135 // NOLINTEND
136
137public:
138 // virtual function thunks
139 // NOLINTBEGIN
140 MCAPI void $tickMovementCatchup(::EntityRegistry& registry);
141
142 MCAPI void $tickMovementCorrectionReplay(::EntityRegistry& registry);
143
144 MCAPI void $registerTickingSystem(
145 ::gsl::span<::Bedrock::typeid_t<::SystemCategory> const> categories,
146 ::std::unique_ptr<::ITickingSystem> system,
147 ::SystemInfo const& info,
148 ::EntitySystemTickingMode tickingMode
149 );
150
151 MCAPI bool $_hasSingleTickCategory(::Bedrock::typeid_t<::SystemCategory> const category) const;
152
153
154 // NOLINTEND
155
156public:
157 // vftables
158 // NOLINTBEGIN
160
161 MCNAPI static void** $vftableForIEntitySystems();
162 // NOLINTEND
163};
Definition EnableNonOwnerReferences.h:7
Definition typeid_t.h:25
Definition EcsEventDispatcher.h:25
Definition EntityRegistry.h:10
static MCAPI void ** $vftableForEnableNonOwnerReferences()
static MCAPI void ** $vftableForIEntitySystems()
Definition IEntitySystems.h:17
Definition ITickingSystem.h:15
Definition PlayerInteractionSystem.h:13
Definition EntitySystemTickingMode.h:5
Definition EntitySystems.h:38
Definition EntitySystems.h:40
Definition EntitySystems.h:42
Definition EntitySystems.h:46
Definition IEntitySystemsCollection.h:21
Definition SystemCategory.h:5
Definition SystemInfo.h:14
Definition TickingSystemId.h:5
Definition TickingSystemWithInfo.h:13