LeviLamina
Loading...
Searching...
No Matches
StructureCache.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/level/ChunkPos.h"
7
8// auto generated forward declare list
9// clang-format off
10class BlockPos;
11namespace br::worldgen { class StructureInstance; }
12namespace br::worldgen { struct Structure; }
13// clang-format on
14
15namespace br::worldgen {
16
18public:
19 // StructureCache inner types declare
20 // clang-format off
21 struct StructurePair;
22 struct StructureTempOwner;
23 // clang-format on
24
25 // StructureCache inner types define
27 public:
28 // member variables
29 // NOLINTBEGIN
30 ::ll::TypedStorage<8, 8, uint64> mStructure;
31 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::br::worldgen::StructureInstance>> mInstance;
32 // NOLINTEND
33
34 public:
35 // member functions
36 // NOLINTBEGIN
37 MCAPI ~StructurePair();
38 // NOLINTEND
39
40 public:
41 // destructor thunk
42 // NOLINTBEGIN
43 MCFOLD void $dtor();
44 // NOLINTEND
45 };
46
48 public:
49 // member variables
50 // NOLINTBEGIN
51 ::ll::TypedStorage<8, 24, ::std::vector<int>> mTimers;
52 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::br::worldgen::StructureInstance>>> mInstances;
53 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mMutex;
54 // NOLINTEND
55 };
56
57 using StructureMap = ::std::unordered_map<::ChunkPos, ::std::vector<::br::worldgen::StructureCache::StructurePair>>;
58
59public:
60 // member variables
61 // NOLINTBEGIN
62 ::ll::TypedStorage<
63 8,
64 64,
65 ::std::unordered_map<::ChunkPos, ::std::vector<::br::worldgen::StructureCache::StructurePair>>>
66 mCache;
67 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mCacheMutex;
68 ::ll::TypedStorage<8, 56, ::br::worldgen::StructureCache::StructureTempOwner> mWaitingToBeClaimed;
69 ::ll::TypedStorage<4, 4, int> mGcTimer;
70 // NOLINTEND
71
72public:
73 // member functions
74 // NOLINTBEGIN
75 MCAPI ::std::shared_ptr<::br::worldgen::StructureInstance const> at(::BlockPos pos) const;
76
77 MCAPI ::std::vector<::std::vector<::std::shared_ptr<::br::worldgen::StructureInstance const>>>
78 collectGroupByStep() const;
79
80 MCAPI void setInstanceForStructure(
81 ::br::worldgen::Structure const& structure,
82 ::std::shared_ptr<::br::worldgen::StructureInstance>&& instance,
83 ::ChunkPos chunkPos
84 );
85
86 MCAPI void tick();
87 // NOLINTEND
88};
89
90} // namespace br::worldgen
Definition BlockPos.h:19
Definition ChunkPos.h:11
Definition StructureCache.h:17
Definition StructureInstance.h:20
Definition StructureCache.h:26
Definition Structure.h:23