LeviLamina
Loading...
Searching...
No Matches
SimpleBlockVolume.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/level/BlockPos.h"
7#include "mc/world/level/block/BlockVolumeBase.h"
8
9// auto generated forward declare list
10// clang-format off
11class AABB;
13class BoundingBox;
14class ChunkPos;
15class Vec3;
16namespace cereal { struct ReflectionCtx; }
17// clang-format on
18
19class SimpleBlockVolume : public ::BlockVolumeBase {
20public:
21 // SimpleBlockVolume inner types define
22 enum class CornerIndex : uchar {
23 FrontBottomLeft = 0,
24 BackBottomLeft = 1,
25 FrontTopLeft = 2,
26 BackTopLeft = 3,
27 FrontBottomRight = 4,
28 BackBottomRight = 5,
29 FrontTopRight = 6,
30 BackTopRight = 7,
31 };
32
33 enum class IntersectionResult : int {
34 Disjoint = 0,
35 Contains = 1,
36 Intersects = 2,
37 };
38
39 using CornerHandle = uchar;
40
41public:
42 // member variables
43 // NOLINTBEGIN
44 ::ll::TypedStorage<4, 12, ::BlockPos> mFrom;
45 ::ll::TypedStorage<4, 12, ::BlockPos> mTo;
46 // NOLINTEND
47
48public:
49 // prevent constructor by default
50 SimpleBlockVolume& operator=(SimpleBlockVolume const&);
51 SimpleBlockVolume();
52
53public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ::BlockPos getMin() const /*override*/;
57
58 virtual ::BlockPos getMax() const /*override*/;
59
60 virtual ::BoundingBox getBoundingBox() const /*override*/;
61
62 virtual ::glm::ivec3 getSpan() const /*override*/;
63
64 virtual int getCapacity() const /*override*/;
65
66 virtual bool isInside(::BlockPos const& pos) const /*override*/;
67
68 virtual void translate(::BlockPos const& delta) /*override*/;
69
70 virtual void forEach(::std::function<bool(::BlockPos const&)> callback) const /*override*/;
71
72 virtual ::std::set<::ChunkPos> getChunks() const /*override*/;
73
74 virtual ::std::unordered_set<::BlockPos> getFlattenedBlockPositions() const /*override*/;
75
76 virtual ::std::unique_ptr<::BaseBlockLocationIterator> getIterator() const /*override*/;
77
78 virtual ~SimpleBlockVolume() /*override*/;
79 // NOLINTEND
80
81public:
82 // member functions
83 // NOLINTBEGIN
84 MCAPI_C SimpleBlockVolume(::SimpleBlockVolume const& volume);
85
86 MCAPI_C SimpleBlockVolume(::BlockPos const& from, ::Vec3 const& size);
87
88 MCAPI_C SimpleBlockVolume(::BlockPos const& from, ::BlockPos const& to);
89
90 MCAPI bool doesAreaTouchFaces(::BlockPos const& min, ::BlockPos const& max) const;
91
92 MCAPI_C uchar getCornerHandle(::SimpleBlockVolume::CornerIndex cornerIndex) const;
93
94 MCAPI_C ::BlockPos getCornerPosition(uchar cornerHandle) const;
95
96 MCAPI_C ::AABB getWorldAABB() const;
97
98 MCAPI ::SimpleBlockVolume::IntersectionResult intersects(::SimpleBlockVolume const& other) const;
99
100 MCAPI_C bool operator==(::SimpleBlockVolume const& other) const;
101
102 MCAPI_C ::SimpleBlockVolume& setCornerPosition(uchar cornerHandle, ::BlockPos const& pos);
103
104 MCAPI_C ::SimpleBlockVolume& translateCorner(uchar cornerHandle, ::glm::ivec3 const& delta);
105 // NOLINTEND
106
107public:
108 // static functions
109 // NOLINTBEGIN
110 MCAPI static void cerealBindTypes(::cereal::ReflectionCtx& ctx);
111 // NOLINTEND
112
113public:
114 // constructor thunks
115 // NOLINTBEGIN
116 MCAPI_C void* $ctor(::SimpleBlockVolume const& volume);
117
118 MCAPI_C void* $ctor(::BlockPos const& from, ::Vec3 const& size);
119
120 MCAPI_C void* $ctor(::BlockPos const& from, ::BlockPos const& to);
121 // NOLINTEND
122
123public:
124 // destructor thunk
125 // NOLINTBEGIN
126 MCFOLD void $dtor();
127 // NOLINTEND
128
129public:
130 // virtual function thunks
131 // NOLINTBEGIN
132 MCAPI ::BlockPos $getMin() const;
133
134 MCAPI ::BlockPos $getMax() const;
135
136 MCAPI ::BoundingBox $getBoundingBox() const;
137
138 MCAPI ::glm::ivec3 $getSpan() const;
139
140 MCAPI int $getCapacity() const;
141
142 MCAPI bool $isInside(::BlockPos const& pos) const;
143
144 MCAPI void $translate(::BlockPos const& delta);
145
146 MCAPI void $forEach(::std::function<bool(::BlockPos const&)> callback) const;
147
148 MCAPI ::std::set<::ChunkPos> $getChunks() const;
149
150 MCAPI ::std::unordered_set<::BlockPos> $getFlattenedBlockPositions() const;
151
152 MCAPI ::std::unique_ptr<::BaseBlockLocationIterator> $getIterator() const;
153
154
155 // NOLINTEND
156
157public:
158 // vftables
159 // NOLINTBEGIN
160 MCNAPI static void** $vftable();
161 // NOLINTEND
162};
Definition AABB.h:18
Definition BaseBlockLocationIterator.h:8
Definition BlockPos.h:19
Definition BlockVolumeBase.h:13
Definition BoundingBox.h:13
Definition ChunkPos.h:11
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition ReflectionCtx.h:11
Definition ctx.h:5