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() = default;
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_C
89 MCAPI void handleGenerationRequests();
90
91 MCAPI void prepareRegion(::ChunkSource& mainChunkSource, ::ChunkPos const& center);
92
93 MCAPI void queueChunkGenerationRequests(
94 ::ChunkPos moveCenter,
95 int chunkRadius,
96 ::Vec3 const& direction,
97 ::std::vector<::ChunkPos> const& serverChunks
98 );
99
100 MCAPI void sendQueuedChunks();
101
102 MCAPI void setClientsNetworkChunkSource(::std::shared_ptr<::ChunkSource> networkChunkSource);
103#endif
104 // NOLINTEND
105
106public:
107 // constructor thunks
108 // NOLINTBEGIN
109 MCAPI void* $ctor(::ILevel& level, ::NetworkIdentifier const& owner, ::SubClientId subClientId);
110 // NOLINTEND
111
112public:
113 // vftables
114 // NOLINTBEGIN
115 MCNAPI static void** $vftable();
116 // NOLINTEND
117};
Definition ChunkPos.h:13
Definition ChunkSource.h:36
Definition ChunkViewSource.h:22
Definition ActiveTransfersManager.h:19
Definition TransferBuilder.h:7
Definition ILevel.h:221
Definition LevelChunkPacket.h:19
Definition LevelChunk.h:77
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