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/block/BlockVolume.h"
9#include "mc/world/level/levelgen/structure/structurepools/alias/PoolAliasBinding.h"
10
11// auto generated forward declare list
12// clang-format off
13class Block;
14class BlockPos;
15class BoundingBox;
16class ChunkPos;
17class Dimension;
18class JigsawBlockInfo;
21class Random;
22class StructurePiece;
25struct JigsawJunction;
26// clang-format on
27
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&);
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 ::BlockPos _findLocalAnchorOffset(
109 ::StructurePoolElement const& initialElement,
110 ::BlockPos const& pieceCornerPosition,
111 ::Rotation const& rotation,
112 ::std::string_view startAnchorName
113 ) const;
114
115 MCAPI bool _tryPlacingPiece(
116 ::PoolElementStructurePiece const& sourcePiece,
117 ::BoundingBox const& sourceBB,
118 ::JigsawBlockInfo const& sourceJigsaw,
119 ::BlockPos const& attachPos,
120 ::StructureTemplatePool const* targetPool,
121 ::BlockPos const& refPos,
122 uint64 contextDepth,
123 ::PoolAliasBinding::PoolAliasLookup const& poolAliasLookup
124 );
125
126 MCAPI void addPieces(
127 ::StructurePoolElement const& initialElement,
128 ::BlockPos const& startPosition,
129 ::Rotation const& rotation,
130 ::std::string_view startAnchorName,
131 ::PoolAliasBinding::PoolAliasLookup const& poolAliasLookup
132 );
133
134 MCAPI ~JigsawPlacement();
135 // NOLINTEND
136
137public:
138 // constructor thunks
139 // NOLINTBEGIN
140 MCAPI void* $ctor(
141 uint64 maxDepth,
142 uint64 globalContextSize,
143 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieceList,
144 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
146 ::BlockPos const&,
147 ::Rotation const&,
148 int,
150 ::BoundingBox const&,
151 ::BlockPos const&
152 )> factory,
153 ::Random& random,
154 ::JigsawStructureRegistry const& pools,
155 ::Dimension& dimension
156 );
157 // NOLINTEND
158
159public:
160 // destructor thunk
161 // NOLINTBEGIN
162 MCAPI void $dtor();
163 // NOLINTEND
164};
Definition BlockPos.h:17
Definition Block.h:37
Definition BoundingBox.h:13
Definition ChunkPos.h:11
Definition Dimension.h:83
Definition JigsawBlockInfo.h:14
Definition JigsawPlacement.h:28
Definition JigsawStructureRegistry.h:23
Definition PoolAliasBinding.h:26
Definition PoolElementStructurePiece.h:25
Definition Random.h:10
Definition StablePriorityQueue.h:6
Definition StructurePiece.h:18
Definition StructurePoolElement.h:39
Definition StructureTemplatePool.h:16
Definition JigsawJunction.h:9