LeviLamina
Loading...
Searching...
No Matches
LegacyJigsawPlacement.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/util/Rotation.h"
7#include "mc/world/level/ChunkPos.h"
8
9// auto generated forward declare list
10// clang-format off
11class BlockPos;
12class BlockVolume;
13class BoundingBox;
14class Dimension;
15class JigsawBlockInfo;
18class Random;
19class StructurePiece;
22struct JigsawJunction;
23// clang-format on
24
25class LegacyJigsawPlacement {
26public:
27 // LegacyJigsawPlacement inner types define
28 using PieceFactory = ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
30 ::BlockPos const&,
31 ::Rotation const&,
32 int,
34 ::BoundingBox const&,
35 ::BlockPos const&
36 )>;
37
38public:
39 // member variables
40 // NOLINTBEGIN
41 ::ll::TypedStorage<4, 4, int const> mMaxDepth;
42 ::ll::TypedStorage<
43 8,
44 64,
45 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
47 ::BlockPos const&,
48 ::Rotation const&,
49 int,
51 ::BoundingBox const&,
52 ::BlockPos const&
53 )>>
54 mFactory;
55 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ChunkPos, ::std::unique_ptr<::std::vector<short>>>>
56 mChunkHeightCache;
57 // NOLINTEND
58
59public:
60 // prevent constructor by default
61 LegacyJigsawPlacement();
62
63public:
64 // member functions
65 // NOLINTBEGIN
66 MCAPI LegacyJigsawPlacement(
67 int maxDepth,
68 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
70 ::BlockPos const&,
71 ::Rotation const&,
72 int,
74 ::BoundingBox const&,
75 ::BlockPos const&
76 )> factory
77 );
78
79 MCAPI void _addPiece(
80 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
81 ::PoolElementStructurePiece const& sourcePiece,
82 ::Random& random,
83 ::BlockPos const& position,
84 ::Rotation const& rotation,
85 ::JigsawStructureRegistry const& pools,
86 ::Dimension& dimension,
87 ::BlockVolume& box,
88 ::BlockPos const& refPos
89 );
90
91 MCAPI bool _tryPlacingPiece(
92 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
93 ::PoolElementStructurePiece const& sourcePiece,
94 ::Random& random,
95 ::JigsawBlockInfo const& sourceJigsaw,
96 ::BoundingBox const& sourceBB,
97 ::std::vector<::BoundingBox>& sourceInternalBBs,
98 ::BlockPos const& attachPos,
99 ::StructureTemplatePool const* targetPool,
100 ::JigsawStructureRegistry const& pools,
101 ::Dimension& dimension,
102 ::BlockVolume& box,
103 ::BlockPos const& refPos
104 );
105
106 MCAPI void addPieces(
107 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
108 ::StructurePoolElement const& initialElement,
109 ::Random& random,
110 ::BlockPos const& position,
111 ::Rotation const& rotation,
112 ::JigsawStructureRegistry const& pools,
113 ::Dimension& dimension
114 );
115
116 MCAPI ~LegacyJigsawPlacement();
117 // NOLINTEND
118
119public:
120 // constructor thunks
121 // NOLINTBEGIN
122 MCAPI void* $ctor(
123 int maxDepth,
124 ::std::function<::std::unique_ptr<::PoolElementStructurePiece>(
126 ::BlockPos const&,
127 ::Rotation const&,
128 int,
130 ::BoundingBox const&,
131 ::BlockPos const&
132 )> factory
133 );
134 // NOLINTEND
135
136public:
137 // destructor thunk
138 // NOLINTBEGIN
139 MCAPI void $dtor();
140 // NOLINTEND
141};
Definition BlockPos.h:21
Definition BlockVolume.h:14
Definition BoundingBox.h:13
Definition Dimension.h:89
Definition JigsawBlockInfo.h:14
Definition JigsawStructureRegistry.h:22
Definition PoolElementStructurePiece.h:25
Definition Random.h:10
Definition StructurePiece.h:21
Definition StructurePoolElement.h:40
Definition StructureTemplatePool.h:16
Definition JigsawJunction.h:9