LeviLamina
Loading...
Searching...
No Matches
JigsawPlacement.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/StablePriorityQueue.h"
7#include "mc/util/Rotation.h"
8#include "mc/world/level/ChunkPos.h"
9#include "mc/world/level/block/BlockVolume.h"
10#include "mc/world/level/levelgen/structure/structurepools/alias/PoolAliasBinding.h"
11
12// auto generated forward declare list
13// clang-format off
14class Block;
15class BlockPos;
16class BoundingBox;
17class Dimension;
18class JigsawBlockInfo;
21class Random;
22class StructurePiece;
25struct JigsawJunction;
26// clang-format on
27
28class JigsawPlacement {
29public:
30 // JigsawPlacement inner types define
31 using PieceFactory = ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
33 ::BlockPos const&,
34 ::Rotation const&,
35 int,
37 ::BoundingBox const&,
38 ::BlockPos const&
39 )>;
40
41public:
42 // member variables
43 // NOLINTBEGIN
44 ::ll::TypedStorage<4, 4, int const> mMaxDepth;
45 ::ll::TypedStorage<4, 4, int const> mGlobalContextSize;
46 ::ll::TypedStorage<
47 8,
48 64,
49 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
51 ::BlockPos const&,
52 ::Rotation const&,
53 int,
55 ::BoundingBox const&,
56 ::BlockPos const&
57 )> const>
58 mFactory;
59 ::ll::TypedStorage<8, 8, ::std::vector<::std::unique_ptr<::StructurePiece>>&> mPieceList;
60 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
61 ::ll::TypedStorage<8, 8, ::JigsawStructureRegistry const&> mPools;
62 ::ll::TypedStorage<8, 8, ::Dimension&> mDimension;
63 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ChunkPos, ::std::unique_ptr<::std::vector<short>>>>
64 mChunkHeightCache;
65 ::ll::TypedStorage<8, 40, ::StablePriorityQueue<::std::function<void()>, ::std::less>> mPlacingQueue;
66 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<::std::vector<::BoundingBox>, ::std::vector<::BoundingBox>>>>
67 mContextStack;
68 ::ll::TypedStorage<8, 24, ::std::vector<::Block const*>> mBlockBuffer;
69 ::ll::TypedStorage<8, 40, ::BlockVolume> mBlockBufferBox;
70 // NOLINTEND
71
72public:
73 // prevent constructor by default
74 JigsawPlacement& operator=(JigsawPlacement const&);
75 JigsawPlacement(JigsawPlacement const&);
76 JigsawPlacement();
77
78public:
79 // member functions
80 // NOLINTBEGIN
81 MCAPI JigsawPlacement(
82 uint64 maxDepth,
83 uint64 globalContextSize,
84 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieceList,
85 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
87 ::BlockPos const&,
88 ::Rotation const&,
89 int,
91 ::BoundingBox const&,
92 ::BlockPos const&
93 )> factory,
94 ::Random& random,
95 ::JigsawStructureRegistry const& pools,
96 ::Dimension& dimension
97 );
98
99 MCAPI void _addPiece(
100 ::PoolElementStructurePiece const& sourcePiece,
101 ::BlockPos const& position,
102 ::Rotation const& rotation,
103 ::BlockPos const& refPos,
104 uint64 contextDepth,
105 ::PoolAliasBinding::PoolAliasLookup const& poolAliasLookup
106 );
107
108 MCAPI bool _tryPlacingPiece(
109 ::PoolElementStructurePiece const& sourcePiece,
110 ::BoundingBox const& sourceBB,
111 ::JigsawBlockInfo const& sourceJigsaw,
112 ::BlockPos const& attachPos,
113 ::StructureTemplatePool const* targetPool,
114 ::BlockPos const& refPos,
115 uint64 contextDepth,
116 ::PoolAliasBinding::PoolAliasLookup const& poolAliasLookup
117 );
118
119 MCAPI void addPieces(
120 ::StructurePoolElement const& initialElement,
121 ::BlockPos const& startPosition,
122 ::Rotation const& rotation,
123 ::std::string_view startAnchorName,
124 ::PoolAliasBinding::PoolAliasLookup const& poolAliasLookup
125 );
126 // NOLINTEND
127
128public:
129 // constructor thunks
130 // NOLINTBEGIN
131 MCAPI void* $ctor(
132 uint64 maxDepth,
133 uint64 globalContextSize,
134 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieceList,
135 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
137 ::BlockPos const&,
138 ::Rotation const&,
139 int,
141 ::BoundingBox const&,
142 ::BlockPos const&
143 )> factory,
144 ::Random& random,
145 ::JigsawStructureRegistry const& pools,
146 ::Dimension& dimension
147 );
148 // NOLINTEND
149};
Definition BlockPos.h:17
Definition Block.h:42
Definition BoundingBox.h:13
Definition Dimension.h:86
Definition JigsawBlockInfo.h:14
Definition JigsawStructureRegistry.h:22
Definition PoolAliasBinding.h:18
Definition PoolElementStructurePiece.h:25
Definition Random.h:10
Definition StablePriorityQueue.h:6
Definition StructurePiece.h:18
Definition StructurePoolElement.h:41
Definition StructureTemplatePool.h:16
Definition JigsawJunction.h:9