LeviLamina
Loading...
Searching...
No Matches
DimensionManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/game_refs/OwnerPtr.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/utility/AutomaticID.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/core/utility/pub_sub/Connector.h"
10#include "mc/deps/core/utility/pub_sub/Publisher.h"
11#include "mc/deps/game_refs/WeakRef.h"
12#include "mc/util/NameIdStore.h"
13#include "mc/world/level/IDimensionManagerConnector.h"
14#include "mc/world/level/dimension/DimensionDefinitionGroup.h"
15
16// auto generated forward declare list
17// clang-format off
18class Dimension;
21struct DimensionIdType;
22namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
23// clang-format on
25
26class DimensionManager : public ::IDimensionManagerConnector {
27public:
28 // member variables
29 // NOLINTBEGIN
30 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::Util::NameIdStore<::DimensionIdType>>>>
31 mDimensionNameIdStore;
32 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::DimensionRegistry>>> mDimensionRegistry;
33 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> const> mDimensionFactory;
34 ::ll::TypedStorage<
35 8,
36 128,
38 mOnNewDimensionCreatedPublisher;
39 ::ll::TypedStorage<8, 24, ::std::optional<::DimensionDefinitionGroup>> mDimensionDefinitions;
40 // NOLINTEND
41
42public:
43 // prevent constructor by default
44 DimensionManager();
45
46public:
47 // virtual functions
48 // NOLINTBEGIN
49 virtual ~DimensionManager() = default;
50
51 virtual ::Bedrock::PubSub::Connector<void(::Dimension&)>& getOnNewDimensionCreatedConnector() /*override*/;
52 // NOLINTEND
53
54public:
55 // member functions
56 // NOLINTBEGIN
57 MCAPI DimensionManager(
58 ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory,
59 ::std::optional<::DimensionDefinitionGroup> dimensionDefinitions
60 );
61
62 MCAPI ::WeakRef<::Dimension> _getDimension(::DimensionIdType registryId) const;
63
64 MCAPI void _registerFixedVanillaDimensionIds();
65
66 MCFOLD void forEachDimension(::std::function<bool(::Dimension&)> callback);
67
68 MCFOLD void forEachDimension(::std::function<bool(::Dimension const&)> callback) const;
69
70 MCAPI ::WeakRef<::Dimension> getDimension(::std::string_view dimensionName) const;
71
72 MCAPI ::WeakRef<::Dimension> getDimension(::DimensionType dimensionType) const;
73
74 MCAPI ::WeakRef<::Dimension> getOrCreateDimension(::std::string_view dimensionName);
75
76 MCAPI ::WeakRef<::Dimension> getOrCreateDimension(::DimensionType dimensionType);
77 // NOLINTEND
78
79public:
80 // constructor thunks
81 // NOLINTBEGIN
82 MCAPI void* $ctor(
83 ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory,
84 ::std::optional<::DimensionDefinitionGroup> dimensionDefinitions
85 );
86 // NOLINTEND
87
88public:
89 // virtual function thunks
90 // NOLINTBEGIN
91 MCFOLD ::Bedrock::PubSub::Connector<void(::Dimension&)>& $getOnNewDimensionCreatedConnector();
92
93
94 // NOLINTEND
95
96public:
97 // vftables
98 // NOLINTBEGIN
99 MCNAPI static void** $vftable();
100 // NOLINTEND
101};
Definition Publisher.h:8
static MCAPI void ** $vftable()
Definition DimensionRegistry.h:16
Definition Dimension.h:86
Definition IDimensionFactory.h:13
Definition IDimensionManagerConnector.h:13
Definition MultiThreaded.h:12
Definition DimensionIdType.h:8