LeviLamina
Loading...
Searching...
No Matches
CommonBlockUtilityServiceProvider.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/editor/block_utils/ContiguousSelectionType.h"
7#include "mc/legacy/facing/Name.h"
8
9// auto generated forward declare list
10// clang-format off
11class AABB;
12class Block;
13class BlockPos;
14class BlockVolumeBase;
15class BoundingBox;
16class ChunkPos;
17class Dimension;
18class Vec3;
19namespace Editor { class RelativeVolumeListBlockVolume; }
20namespace Editor::BlockMask { class BlockMaskList; }
21// clang-format on
22
23namespace Editor::BlockUtils {
24
26public:
27 // virtual functions
28 // NOLINTBEGIN
29 virtual ~CommonBlockUtilityServiceProvider() = default;
30
31 virtual ::std::set<::ChunkPos> getChunksFromAABB(::AABB const& aabb) const = 0;
32
33 virtual bool isChunkLoaded(::ChunkPos const& pos) const = 0;
34
35 virtual bool isChunkFullyLoaded(::ChunkPos const& pos) const = 0;
36
37 virtual bool areChunksLoaded(::std::set<::ChunkPos> const& chunks) const = 0;
38
39 virtual bool isAreaLoaded(::AABB const& aabb) const = 0;
40
41 virtual ::Editor::RelativeVolumeListBlockVolume trimVolumeToFitContents(
42 ::std::variant<::BlockVolumeBase const*, ::Editor::RelativeVolumeListBlockVolume const*> const inVolume,
43 bool retainMarqueeAfterTrimming,
44 bool ignoreLiquid,
45 bool ignoreNoCollision,
47 ) = 0;
48
49 virtual ::Editor::RelativeVolumeListBlockVolume findObscuredBlocksWithinVolume(
50 ::std::variant<::BlockVolumeBase const*, ::Editor::RelativeVolumeListBlockVolume const*> const inVolume
51 ) = 0;
52
53 virtual ::Editor::RelativeVolumeListBlockVolume shrinkWrapVolume(
54 ::std::variant<::BlockVolumeBase const*, ::Editor::RelativeVolumeListBlockVolume const*> const
55 ) = 0;
56
57 virtual bool isLocationInsideDimensionBounds(
58 ::std::variant<
59 ::BlockVolumeBase const*,
61 ::Vec3 const*,
62 ::BoundingBox const*,
63 ::BlockPos const*> const test
64 ) = 0;
65
66 virtual ::Editor::RelativeVolumeListBlockVolume getContiguousSelection(
67 int const size,
68 ::Facing::Name const& selectionDirection,
69 ::Vec3 const& startingLocation,
70 bool const isFace,
71 int const fullSelectionToleranceLevel,
72 bool const checkForAdjacentFaceBlocks,
73 ::Editor::BlockUtils::ContiguousSelectionType const& contiguousSelectionType,
74 ::std::vector<::std::string> const& contiguousSelectionBlockList
75 ) const = 0;
76
77 virtual bool areBlocksContiguous(
78 ::Editor::BlockUtils::ContiguousSelectionType const& contiguousSelectionType,
79 ::Block const& blockToTest,
80 ::Block const& blockToFollow,
81 ::std::vector<::std::string> const& allowList
82 ) const = 0;
83
84 virtual ::Vec3 getDeltaFromDirection(::Facing::Name const& selectionDirection) const = 0;
85
86 virtual ::Vec3 getDimensionMinLocation() const = 0;
87
88 virtual ::Vec3 getDimensionMaxLocation() const = 0;
89
90 virtual ::BoundingBox getDimensionLocationBoundingBox() const = 0;
91
92 virtual ::AABB getBoundForContiguousSelection(
93 ::Vec3 const& initialLocation,
94 ::Facing::Name const& selectionDirection,
95 int const size,
96 bool const isFace
97 ) const = 0;
98
99 virtual bool isBlockExposedInDirection(
100 ::Dimension const& dimension,
101 ::Vec3 const& targetLocation,
102 ::Facing::Name const& direction
103 ) const = 0;
104
105 virtual bool isSameBlockType(::Block const& blockA, ::Block const& blockB) const = 0;
106
107 virtual bool isSameBlockAndProperties(::Block const& blockA, ::Block const& blockB) const = 0;
108
109 virtual bool
110 isBlockTypeInSelectionList(::Block const& block, ::std::vector<::std::string> const& allowList) const = 0;
111 // NOLINTEND
112};
113
114} // namespace Editor::BlockUtils
Definition AABB.h:18
Definition BlockPos.h:17
Definition BlockVolumeBase.h:16
Definition Block.h:41
Definition BoundingBox.h:13
Definition ChunkPos.h:13
Definition Dimension.h:86
Definition BlockMaskList.h:13
Definition CommonBlockUtilityServiceProvider.h:25
Definition RelativeVolumeListBlockVolume.h:24
Definition Vec3.h:10