LeviLamina
Loading...
Searching...
No Matches
NetworkChunkPublisher.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/common/SubClientId.h"
7#include "mc/network/NetworkIdentifier.h"
8#include "mc/server/ChunkPositionAndDimension.h"
9#include "mc/server/ClientGenerationRequestHandler.h"
10#include "mc/world/level/BlockPos.h"
11
12// auto generated forward declare list
13// clang-format off
14class ChunkPos;
15class ChunkSource;
16class ChunkViewSource;
17class ILevel;
18class LevelChunk;
22class Vec3;
23namespace ClientBlobCache::Server { class ActiveTransfersManager; }
24namespace ClientBlobCache::Server { class TransferBuilder; }
25// clang-format on
26
27class NetworkChunkPublisher {
28public:
29 // member variables
30 // NOLINTBEGIN
31 ::ll::TypedStorage<8, 8, ::ILevel&> mLevel;
32 ::ll::TypedStorage<8, 8, ::ServerNetworkSystem*> mNetwork;
33 ::ll::TypedStorage<8, 176, ::NetworkIdentifier> mOwner;
34 ::ll::TypedStorage<8, 8, ::ClientBlobCache::Server::ActiveTransfersManager*> mClientCache;
35 ::ll::TypedStorage<1, 1, ::SubClientId> mSubClientId;
36 ::ll::TypedStorage<4, 12, ::BlockPos> mLastChunkUpdatePosition;
37 ::ll::TypedStorage<4, 4, uint> mLastChunkUpdateRadius;
38 ::ll::TypedStorage<4, 4, uint> mHandleForChunkBuildOrderUpdates;
39 ::ll::TypedStorage<4, 4, int> mChunksSentSinceStart;
40 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ChunkViewSource>> mSource;
41 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ChunkSource>> mNetworkChunkSource;
42 ::ll::TypedStorage<8, 64, ::std::function<void(::gsl::span<::std::shared_ptr<::LevelChunk>>)>> mAddCallback;
43 ::ll::TypedStorage<8, 32, ::std::string> mCacheSerializeBuffer;
44 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ChunkPositionAndDimension, ::std::weak_ptr<::LevelChunk>>>
45 mQueuedChunks;
46 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastGenerationRequestQueued;
47 ::ll::TypedStorage<1, 1, bool> mWaitingForServerChunks;
48 ::ll::TypedStorage<1, 1, bool> mInitialSpawnDone;
49 ::ll::TypedStorage<
50 8,
51 40,
52 ::std::queue<::ClientGenerationRequestHandler, ::std::deque<::ClientGenerationRequestHandler>>>
53 mGenerationRequests;
54 // NOLINTEND
55
56public:
57 // prevent constructor by default
58 NetworkChunkPublisher& operator=(NetworkChunkPublisher const&);
59 NetworkChunkPublisher(NetworkChunkPublisher const&);
60 NetworkChunkPublisher();
61
62public:
63 // virtual functions
64 // NOLINTBEGIN
65 virtual ~NetworkChunkPublisher();
66 // NOLINTEND
67
68public:
69 // member functions
70 // NOLINTBEGIN
71 MCAPI NetworkChunkPublisher(::ILevel& level, ::NetworkIdentifier const& owner, ::SubClientId subClientId);
72
73 MCAPI bool _sendQueuedChunk(
74 ::ChunkPositionAndDimension const& queuedChunk,
76 );
77
78 MCAPI void _serializeAndCache(
79 ::LevelChunkPacket& packet,
81 ::std::function<void(::VarIntDataOutput&)>&& serialize
82 );
83
84 MCAPI void clearRegion();
85
86 MCAPI void destroyRegion();
87
88#ifdef LL_PLAT_S
89 MCAPI int getChunksSentSinceStart() const;
90#endif
91
92#ifdef LL_PLAT_C
93 MCAPI void handleGenerationRequests();
94#endif
95
96 MCAPI bool is2DPositionRelevant(::BlockPos const& position) const;
97
98 MCAPI void moveRegion(::BlockPos const& position, uint blockRadius, ::Vec3 const& direction, float minDistance);
99
100 MCAPI void prepareRegion(::ChunkSource& mainChunkSource, ::ChunkPos const& center);
101
102#ifdef LL_PLAT_C
103 MCAPI void queueChunkGenerationRequests(
104 ::ChunkPos moveCenter,
105 int chunkRadius,
106 ::Vec3 const& direction,
107 ::std::vector<::ChunkPos> const& serverChunks
108 );
109#endif
110
111 MCAPI void resetInitialSpawn();
112
113 MCAPI void sendQueuedChunks();
114
115#ifdef LL_PLAT_C
116 MCAPI void setClientsNetworkChunkSource(::std::shared_ptr<::ChunkSource> networkChunkSource);
117
118 MCAPI void setPlayerNetworkId(::NetworkIdentifier const& id);
119#endif
120
121#ifdef LL_PLAT_S
122 MCAPI void
123 setServerSettings(::ServerNetworkSystem& network, ::ClientBlobCache::Server::ActiveTransfersManager& cacheManager);
124#endif
125 // NOLINTEND
126
127public:
128 // constructor thunks
129 // NOLINTBEGIN
130 MCAPI void* $ctor(::ILevel& level, ::NetworkIdentifier const& owner, ::SubClientId subClientId);
131 // NOLINTEND
132
133public:
134 // destructor thunk
135 // NOLINTBEGIN
136 MCAPI void $dtor();
137 // NOLINTEND
138
139public:
140 // vftables
141 // NOLINTBEGIN
142 MCNAPI static void** $vftable();
143 // NOLINTEND
144};
Definition BlockPos.h:21
Definition ChunkPos.h:11
Definition ChunkSource.h:37
Definition ChunkViewSource.h:23
Definition ActiveTransfersManager.h:20
Definition TransferBuilder.h:7
Definition ILevel.h:219
Definition LevelChunkPacket.h:18
Definition LevelChunk.h:87
static MCAPI void ** $vftable()
Definition NetworkIdentifier.h:10
Definition ServerNetworkSystem.h:34
Definition VarIntDataOutput.h:13
Definition Vec3.h:10
Definition ChunkPositionAndDimension.h:9
Definition serialize.h:11