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