LeviLamina
Loading...
Searching...
No Matches
ServerPlayer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/certificates/identity/PlayerAuthenticationType.h"
7#include "mc/client/gui/oreui/binding/queries/core/PlatformType.h"
8#include "mc/common/SubClientId.h"
9#include "mc/deps/core/string/HashedString.h"
10#include "mc/deps/core/utility/CrashDumpLogStringID.h"
11#include "mc/deps/core/utility/NonOwnerPointer.h"
12#include "mc/deps/input/InputMode.h"
13#include "mc/deps/shared_types/legacy/ContainerType.h"
14#include "mc/deps/shared_types/legacy/actor/ArmorSlot.h"
15#include "mc/legacy/ActorUniqueID.h"
16#include "mc/util/CallbackToken.h"
17#include "mc/util/HudElement.h"
18#include "mc/util/HudVisibility.h"
19#include "mc/world/ContainerID.h"
20#include "mc/world/actor/ActorEvent.h"
21#include "mc/world/actor/ActorInitializationMethod.h"
22#include "mc/world/actor/ActorSwingSource.h"
23#include "mc/world/actor/player/Player.h"
24#include "mc/world/actor/player/PlayerPartyInfo.h"
25#include "mc/world/actor/player/ServerLocatorBar.h"
26#include "mc/world/actor/player/VanillaWaypointManager.h"
27#include "mc/world/inventory/InventoryMenu.h"
28#include "mc/world/item/HandSlot.h"
29#include "mc/world/level/GameType.h"
30#include "mc/world/level/Tick.h"
31
32// auto generated forward declare list
33// clang-format off
34class Actor;
36class BlockActor;
37class BlockPos;
38class ChunkPos;
39class ChunkSource;
41class CompoundTag;
42class Container;
44class DataLoadHelper;
45class EntityContext;
47class IPacketObserver;
49class ItemStack;
50class Level;
52class Packet;
53class PacketSender;
57class TextObjectRoot;
58class Vec3;
59struct DimensionType;
60struct INpcDialogueData;
65namespace Bedrock::DDUI { class DataStoreSyncServer; }
66namespace ClientBlobCache::Server { class ActiveTransfersManager; }
67namespace Editor { class IEditorManager; }
68namespace Editor { class IEditorPlayer; }
69namespace mce { class UUID; }
71// clang-format on
72
73class ServerPlayer : public ::Player {
74public:
75 // ServerPlayer inner types declare
76 // clang-format off
77 struct NearbyActor;
78 // clang-format on
79
80 // ServerPlayer inner types define
81 struct NearbyActor {
82 public:
83 // NearbyActor inner types define
84 enum class State : int {
85 Unknown = 0,
86 New = 1,
87 Exist = 2,
88 DidExist = 3,
89 };
90
91 public:
92 // member variables
93 // NOLINTBEGIN
94 ::ll::TypedStorage<1, 1, bool> isAutonomous;
95 ::ll::TypedStorage<4, 4, ::ServerPlayer::NearbyActor::State> state;
96 ::ll::TypedStorage<8, 8, ::Actor*> tempActor;
97 // NOLINTEND
98 };
99
100 using OnPlayerLoadedCallback = ::std::function<void(::ServerPlayer&)>;
101
102public:
103 LLNDAPI static ServerPlayer* tryGetFromEntity(::EntityContext& entity, bool includeRemoved);
104
105public:
106 // member variables
107 // NOLINTBEGIN
108 ::ll::TypedStorage<4, 4, ::PlatformType> mPlatformType;
109 ::ll::TypedStorage<8, 32, ::std::string> mLanguageCode;
110 ::ll::TypedStorage<8, 8, ::ServerNetworkSystem&> mNetwork;
111 ::ll::TypedStorage<8, 64, ::std::function<void(::ServerPlayer&)>> mOnPlayerLoadedCallback;
112 ::ll::TypedStorage<8, 112, ::InventoryMenu> mInventoryMenu;
113 ::ll::TypedStorage<1, 1, ::ContainerID> mContainerCounter;
114 ::ll::TypedStorage<8, 16, ::CallbackToken> mCloseContainerToken;
115 ::ll::TypedStorage<4, 4, uint> mMaxChunkRadius;
116 ::ll::TypedStorage<1, 1, bool> mIsInitialPlayerLoadHappening;
117 ::ll::TypedStorage<1, 1, bool> mIsTeacher;
118 ::ll::TypedStorage<1, 1, bool> mIsExternalCommunicationAllowed;
119 ::ll::TypedStorage<1, 1, bool> mLocalPlayerInitialized;
120 ::ll::TypedStorage<1, 1, bool> mWaitingForTickingAreasPreload;
121 ::ll::TypedStorage<8, 8, ::Tick> mPrevShieldBlockingTick;
122 ::ll::TypedStorage<4, 4, uint> mClientViewRadius;
123 ::ll::TypedStorage<4, 4, uint> mClientRequestedRadius;
124 ::ll::TypedStorage<1, 1, bool> mIsCompatibleWithClientSideChunkGen;
125 ::ll::TypedStorage<8, 48, ::std::optional<::PlayerPartyInfo>> mPartyInfo;
126 ::ll::TypedStorage<4, 4, int> mRemainingStructureRefreshTicks;
127 ::ll::TypedStorage<8, 48, ::HashedString> mCurrentStructureFeature;
128 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ActorUniqueID, ::ServerPlayer::NearbyActor>> mNearbyActors;
129 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Editor::IEditorPlayer>> mEditorServerPlayer;
130 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Bedrock::DDUI::DataStoreSyncServer>> mDataStoreSync;
131 ::ll::TypedStorage<1, 1, bool> mHasQueuedViewMove;
132 ::ll::TypedStorage<1, 1, bool> mIsPendingDisconnect;
133 ::ll::TypedStorage<4, 52, ::std::array<::HudVisibility, 13>> mHudElementsVisibilityState;
134 ::ll::TypedStorage<8, 24, ::ServerLocatorBar> mServerLocatorBar;
135 ::ll::TypedStorage<8, 24, ::VanillaWaypointManager> mVanillaWaypointManager;
136 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IPacketObserver>> mPacketObserver;
137 // NOLINTEND
138
139public:
140 // prevent constructor by default
141 ServerPlayer& operator=(ServerPlayer const&);
142 ServerPlayer(ServerPlayer const&);
143 ServerPlayer();
144
145public:
146 // virtual functions
147 // NOLINTBEGIN
148 virtual ~ServerPlayer() /*override*/;
149
150 virtual void
151 initializeComponents(::ActorInitializationMethod method, ::VariantParameterList const& params) /*override*/;
152
153 virtual void aiStep() /*override*/;
154
155 virtual void normalTick() /*override*/;
156
157 virtual void
158 knockback(::Actor* source, float damage, float xd, float zd, ::KnockbackParameters const& parameters) /*override*/;
159
160 virtual void die(::ActorDamageSource const& source) /*override*/;
161
162 virtual void moveView() /*override*/;
163
164 virtual void moveSpawnView(::Vec3 const& spawnPosition, ::DimensionType dimension) /*override*/;
165
166 virtual void frameUpdate(::FrameUpdateContextBase&) /*override*/;
167
168 virtual bool isValidTarget(::Actor* attacker) const /*override*/;
169
170 virtual bool swing(::ActorSwingSource swingSource, ::HandSlot handSlot) /*override*/;
171
172 virtual void
173 hurtArmorSlots(::ActorDamageSource const& source, int dmg, ::std::bitset<5> const hurtSlots) /*override*/;
174
175 virtual void sendArmorDamage(::std::bitset<5> const damagedSlots) /*override*/;
176
177 virtual void sendArmor(::std::bitset<5> const armorSlots) /*override*/;
178
179 virtual void setDamagedArmor(::SharedTypes::Legacy::ArmorSlot slot, ::ItemStack const& item) /*override*/;
180
181 virtual void sendInventory(bool shouldSelectSlot) /*override*/;
182
183 virtual void sendInventoryTransaction(::InventoryTransaction const& transaction) const /*override*/;
184
185 virtual void sendComplexInventoryTransaction(::std::unique_ptr<::ComplexInventoryTransaction> transaction) const
186 /*override*/;
187
188 virtual void sendNetworkPacket(::Packet& packet) const /*override*/;
189
190 virtual void displayTextObjectMessage(
191 ::TextObjectRoot const& textObject,
192 ::std::string const& fromXuid,
193 ::std::string const& fromPlatformId
194 ) /*override*/;
195
196 virtual void displayTextObjectWhisperMessage(
197 ::ResolvedTextObject const& textObject,
198 ::std::string const& xuid,
199 ::std::string const& platformId
200 ) /*override*/;
201
202 virtual void displayTextObjectWhisperMessage(
203 ::std::string const& message,
204 ::std::string const& xuid,
205 ::std::string const& platformId
206 ) /*override*/;
207
208 virtual void displayWhisperMessage(
209 ::std::string const& author,
210 ::std::string const& message,
211 ::std::optional<::std::string> const filteredMessage,
212 ::std::string const& xuid,
213 ::std::string const& platformId
214 ) /*override*/;
215
216 virtual void openTrading(::ActorUniqueID const& uniqueID, bool useNewScreen) /*override*/;
217
218 virtual void openPortfolio() /*override*/;
219
220 virtual void openNpcInteractScreen(::std::shared_ptr<::INpcDialogueData> npc) /*override*/;
221
222 virtual void openInventory() /*override*/;
223
224 virtual void openBook(int, bool, int, ::BlockActor* lectern) /*override*/;
225
226 virtual void openSign(::BlockPos const& position, bool isFrontSide) /*override*/;
227
228 virtual void checkMovementStats(::Vec3 const& d) /*override*/;
229
230 virtual ::HashedString getCurrentStructureFeature() const /*override*/;
231
232 virtual void handleEntityEvent(::ActorEvent id, int data) /*override*/;
233
234 virtual void setContainerData(::IContainerManager& menu, int id, int value) /*override*/;
235
236 virtual void slotChanged(
237 ::IContainerManager& menu,
238 ::Container& container,
239 int slot,
240 ::ItemStack const& oldItem,
241 ::ItemStack const& newItem,
242 bool isResultSlot
243 ) /*override*/;
244
245 virtual void refreshContainer(::IContainerManager& menu) /*override*/;
246
247 virtual void stopSleepInBed(bool forcefulWakeUp, bool updateLevelList) /*override*/;
248
249 virtual void setArmor(::SharedTypes::Legacy::ArmorSlot const armorSlot, ::ItemStack const& item) /*override*/;
250
251 virtual void setOffhandSlot(::ItemStack const& item) /*override*/;
252
253 virtual void clearVanishEnchantedItemsOnDeath() /*override*/;
254
255 virtual bool canChangeDimensionsUsingPortal() const /*override*/;
256
257 virtual void changeDimension(::DimensionType toId) /*override*/;
258
259 virtual void changeDimensionWithCredits(::DimensionType dimension) /*override*/;
260
261 virtual void setPlayerGameType(::GameType gameType) /*override*/;
262
263 virtual void prepareRegion(::ChunkSource& mainChunkSource) /*override*/;
264
265 virtual bool isActorRelevant(::Actor const& actor) /*override*/;
266
267 virtual ::ActorUniqueID getControllingPlayer() const /*override*/;
268
269 virtual void destroyRegion() /*override*/;
270
271 virtual void onSuspension() /*override*/;
272
273 virtual void onLinkedSlotsChanged() /*override*/;
274
275 virtual bool isTeacher() const /*override*/;
276
277 virtual bool isExternalCommunicationAllowed() const /*override*/;
278
279 virtual bool isLoading() const /*override*/;
280
281 virtual bool load(::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper) /*override*/;
282
283 virtual bool isPlayerInitialized() const /*override*/;
284
285 virtual void respawn() /*override*/;
286
287 virtual ::PlayerEventCoordinator& getPlayerEventCoordinator() /*override*/;
288
289 virtual void destroyEditorPlayer() /*override*/;
290
291 virtual ::Bedrock::NonOwnerPointer<::Editor::IEditorPlayer> getEditorPlayer() const /*override*/;
292
293 virtual uchar getMaxChunkBuildRadius() const /*override*/;
294
295 virtual ::std::optional<::PlayerPartyInfo> getPartyInfo_UNTRUSTED() const /*override*/;
296
297 virtual void addChunksToQueue(::std::vector<::ChunkPos> const& chunkPostions) /*override*/;
298
299 virtual int _getSpawnChunkLimit() const;
300
301 virtual void _updateChunkPublisherView(::Vec3 const& position, float minDistance);
302
303 virtual void _serverInitItemStackIds() /*override*/;
304 // NOLINTEND
305
306public:
307 // member functions
308 // NOLINTBEGIN
309 MCAPI ServerPlayer(
310 ::Level& level,
311 ::PacketSender& packetSender,
312 ::ServerNetworkSystem& network,
313 ::ClientBlobCache::Server::ActiveTransfersManager& clientCacheMirror,
314 ::GameType playerGameType,
315 bool isHostingPlayer,
316 ::NetworkIdentifier const& owner,
317 ::SubClientId subid,
318 ::std::function<void(::ServerPlayer&)> onPlayerLoadedCallback,
319 ::mce::UUID uuid,
320 ::std::string const& deviceId,
321 ::PlayerAuthenticationType authType,
322 ::PlayerAuthenticationInfo const& authInfo,
323 int maxChunkRadius,
324 bool enableItemStackNetManager,
325 ::EntityContext& entityContext,
326 ::PlatformType platformType,
327 ::InputMode inputMode,
328 ::SyncedClientOptionsComponent clientOptions
329 );
330
331 MCAPI void _logCDEvent(
332 ::CrashDumpLogStringID option1,
333 ::CrashDumpLogStringID option2,
334 ::CrashDumpLogStringID option3,
335 ::CrashDumpLogStringID option4
336 );
337
338 MCAPI void _removeNearbyEntities();
339
340 MCAPI void _setContainerManagerModel(::std::shared_ptr<::ContainerManagerModel> menu);
341
342 MCAPI void addActorToReplicationList(::gsl::not_null<::Actor*> actor, bool autonomous);
343
344 MCAPI void createEditorPlayer(::Bedrock::NonOwnerPointer<::Editor::IEditorManager> editorManager);
345
346 MCAPI void disconnect();
347
348 MCAPI void doDeleteContainerManager(bool forceDisconnect);
349
350 MCAPI void doInitialSpawn();
351
352 MCAPI ::std::string getLanguageCode() const;
353
354 MCAPI void handleActorPickRequestOnServer(::Actor& target, bool withData, bool isActorAgentAndEduMode);
355
356 MCAPI void handleBlockPickRequestOnServer(::BlockPos const& position, bool withData);
357
358 MCAPI void hideAllExcept(::std::optional<::std::vector<::HudElement>> const& hudElements);
359
360 MCAPI void initiateContainerClose();
361
362 MCAPI bool isInPickRangeOf(::BlockPos const& pos) const;
363
364 MCAPI ::ContainerID openUnmanagedContainer(
365 ::SharedTypes::Legacy::ContainerType containerType,
366 ::std::variant<::BlockPos, ::ActorUniqueID> owner
367 );
368
369 MCAPI void postReplicationTick(::Tick const& currentTick);
370
371 MCAPI void preReplicationTick(::Tick const& currentTick);
372
373 MCAPI bool selectItem(::ItemStack const& item);
374
375 MCAPI void sendPlayerContainerClosedEvent();
376
377 MCAPI void sendPlayerContainerOpenedEvent(
378 ::SharedTypes::Legacy::ContainerType type,
379 ::std::variant<::BlockPos, ::ActorUniqueID> owner
380 );
381
382 MCAPI void setClientChunkRadius(uint requestedRadius, uchar clientMaxChunkRadius);
383
384 MCAPI void setHudVisibilityState(
385 ::HudVisibility hudVisibility,
386 ::std::optional<::std::vector<::HudElement>> const& hudElements
387 );
388
389 MCAPI void updatePartyState(::std::optional<::PlayerPartyInfo> partyInfo);
390 // NOLINTEND
391
392public:
393 // constructor thunks
394 // NOLINTBEGIN
395 MCAPI void* $ctor(
396 ::Level& level,
397 ::PacketSender& packetSender,
398 ::ServerNetworkSystem& network,
399 ::ClientBlobCache::Server::ActiveTransfersManager& clientCacheMirror,
400 ::GameType playerGameType,
401 bool isHostingPlayer,
402 ::NetworkIdentifier const& owner,
403 ::SubClientId subid,
404 ::std::function<void(::ServerPlayer&)> onPlayerLoadedCallback,
405 ::mce::UUID uuid,
406 ::std::string const& deviceId,
407 ::PlayerAuthenticationType authType,
408 ::PlayerAuthenticationInfo const& authInfo,
409 int maxChunkRadius,
410 bool enableItemStackNetManager,
411 ::EntityContext& entityContext,
412 ::PlatformType platformType,
413 ::InputMode inputMode,
414 ::SyncedClientOptionsComponent clientOptions
415 );
416 // NOLINTEND
417
418public:
419 // destructor thunk
420 // NOLINTBEGIN
421 MCAPI void $dtor();
422 // NOLINTEND
423
424public:
425 // virtual function thunks
426 // NOLINTBEGIN
427 MCAPI void $initializeComponents(::ActorInitializationMethod method, ::VariantParameterList const& params);
428
429 MCAPI void $aiStep();
430
431 MCAPI void $normalTick();
432
433 MCAPI void $knockback(::Actor* source, float damage, float xd, float zd, ::KnockbackParameters const& parameters);
434
435 MCAPI void $die(::ActorDamageSource const& source);
436
437 MCAPI void $moveView();
438
439 MCAPI void $moveSpawnView(::Vec3 const& spawnPosition, ::DimensionType dimension);
440
441 MCFOLD void $frameUpdate(::FrameUpdateContextBase&);
442
443 MCAPI bool $isValidTarget(::Actor* attacker) const;
444
445 MCAPI bool $swing(::ActorSwingSource swingSource, ::HandSlot handSlot);
446
447 MCAPI void $hurtArmorSlots(::ActorDamageSource const& source, int dmg, ::std::bitset<5> const hurtSlots);
448
449 MCAPI void $sendArmorDamage(::std::bitset<5> const damagedSlots);
450
451 MCAPI void $sendArmor(::std::bitset<5> const armorSlots);
452
453 MCAPI void $setDamagedArmor(::SharedTypes::Legacy::ArmorSlot slot, ::ItemStack const& item);
454
455 MCAPI void $sendInventory(bool shouldSelectSlot);
456
457 MCAPI void $sendInventoryTransaction(::InventoryTransaction const& transaction) const;
458
459 MCAPI void $sendComplexInventoryTransaction(::std::unique_ptr<::ComplexInventoryTransaction> transaction) const;
460
461 MCAPI void $sendNetworkPacket(::Packet& packet) const;
462
463 MCAPI void $displayTextObjectMessage(
464 ::TextObjectRoot const& textObject,
465 ::std::string const& fromXuid,
466 ::std::string const& fromPlatformId
467 );
468
469 MCAPI void $displayTextObjectWhisperMessage(
470 ::ResolvedTextObject const& textObject,
471 ::std::string const& xuid,
472 ::std::string const& platformId
473 );
474
475 MCAPI void $displayTextObjectWhisperMessage(
476 ::std::string const& message,
477 ::std::string const& xuid,
478 ::std::string const& platformId
479 );
480
481 MCAPI void $displayWhisperMessage(
482 ::std::string const& author,
483 ::std::string const& message,
484 ::std::optional<::std::string> const filteredMessage,
485 ::std::string const& xuid,
486 ::std::string const& platformId
487 );
488
489 MCAPI void $openTrading(::ActorUniqueID const& uniqueID, bool useNewScreen);
490
491 MCFOLD void $openPortfolio();
492
493 MCFOLD void $openNpcInteractScreen(::std::shared_ptr<::INpcDialogueData> npc);
494
495 MCAPI void $openInventory();
496
497 MCAPI void $openBook(int, bool, int, ::BlockActor* lectern);
498
499 MCAPI void $openSign(::BlockPos const& position, bool isFrontSide);
500
501 MCAPI void $checkMovementStats(::Vec3 const& d);
502
503 MCAPI ::HashedString $getCurrentStructureFeature() const;
504
505 MCAPI void $handleEntityEvent(::ActorEvent id, int data);
506
507 MCAPI void $setContainerData(::IContainerManager& menu, int id, int value);
508
509 MCAPI void $slotChanged(
510 ::IContainerManager& menu,
511 ::Container& container,
512 int slot,
513 ::ItemStack const& oldItem,
514 ::ItemStack const& newItem,
515 bool isResultSlot
516 );
517
518 MCAPI void $refreshContainer(::IContainerManager& menu);
519
520 MCAPI void $stopSleepInBed(bool forcefulWakeUp, bool updateLevelList);
521
522 MCAPI void $setArmor(::SharedTypes::Legacy::ArmorSlot const armorSlot, ::ItemStack const& item);
523
524 MCAPI void $setOffhandSlot(::ItemStack const& item);
525
526 MCAPI void $clearVanishEnchantedItemsOnDeath();
527
528 MCAPI bool $canChangeDimensionsUsingPortal() const;
529
530 MCAPI void $changeDimension(::DimensionType toId);
531
532 MCAPI void $changeDimensionWithCredits(::DimensionType dimension);
533
534 MCAPI void $setPlayerGameType(::GameType gameType);
535
536 MCAPI void $prepareRegion(::ChunkSource& mainChunkSource);
537
538 MCAPI bool $isActorRelevant(::Actor const& actor);
539
540 MCAPI ::ActorUniqueID $getControllingPlayer() const;
541
542 MCAPI void $destroyRegion();
543
544 MCAPI void $onSuspension();
545
546 MCAPI void $onLinkedSlotsChanged();
547
548 MCAPI bool $isTeacher() const;
549
550 MCAPI bool $isExternalCommunicationAllowed() const;
551
552 MCAPI bool $isLoading() const;
553
554 MCAPI bool $load(::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper);
555
556 MCAPI bool $isPlayerInitialized() const;
557
558 MCAPI void $respawn();
559
560 MCAPI ::PlayerEventCoordinator& $getPlayerEventCoordinator();
561
562 MCAPI void $destroyEditorPlayer();
563
564 MCAPI ::Bedrock::NonOwnerPointer<::Editor::IEditorPlayer> $getEditorPlayer() const;
565
566 MCAPI uchar $getMaxChunkBuildRadius() const;
567
568 MCAPI ::std::optional<::PlayerPartyInfo> $getPartyInfo_UNTRUSTED() const;
569
570 MCAPI void $addChunksToQueue(::std::vector<::ChunkPos> const& chunkPostions);
571
572 MCAPI int $_getSpawnChunkLimit() const;
573
574 MCAPI void $_updateChunkPublisherView(::Vec3 const& position, float minDistance);
575
576 MCAPI void $_serverInitItemStackIds();
577
578
579 // NOLINTEND
580};
Definition ActorDamageSource.h:18
Definition Actor.h:113
Definition DataStoreSyncServer.h:15
Definition BlockActor.h:29
Definition BlockPos.h:17
Definition ChunkPos.h:13
Definition ChunkSource.h:36
Definition ActiveTransfersManager.h:19
Definition ComplexInventoryTransaction.h:20
Definition CompoundTag.h:18
Definition ContainerManagerModel.h:32
Definition Container.h:35
Definition DataLoadHelper.h:20
Definition IEditorManager.h:25
Definition IEditorPlayer.h:17
Definition EntityContext.h:15
Definition FrameUpdateContextBase.h:5
Definition HashedString.h:5
Definition IContainerManager.h:16
Definition IPacketObserver.h:14
Definition InventoryTransaction.h:18
Definition ItemStack.h:26
Definition Level.h:254
Definition NetworkIdentifier.h:10
Definition PacketSender.h:17
Definition Packet.h:29
Definition PlayerEventCoordinator.h:20
Definition ResolvedTextObject.h:5
Definition ServerNetworkSystem.h:34
Definition TextObjectRoot.h:14
Definition Vec3.h:10
Definition UUID.h:8
STL namespace.
Definition ActorUniqueID.h:5
Definition DimensionType.h:5
Definition INpcDialogueData.h:12
Definition KnockbackParameters.h:5
Definition PlayerAuthenticationInfo.h:9
Definition PlayerPartyInfo.h:5
Definition ServerPlayer.h:81
Definition SyncedClientOptionsComponent.h:10
Definition Tick.h:5
Definition VariantParameterList.h:14