149 return i >= 0 &&
static_cast<u32
>(i) <
getVolume();
201 template <
typename C>
215 const auto &take = [&result] (
v3s16 min,
v3s16 max) {
301 i += a * extent.X * extent.Y;
309 i += a.Z * extent.X * extent.Y + a.Y * extent.X + a.X;
383 (
"VoxelManipulator: getNode: inexistent");
446 m_flags[index] &= ~VOXELFLAG_NO_DATA;
461 m_flags[index] &= ~VOXELFLAG_NO_DATA;
Definition exceptions.h:108
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:509
v3s16 MinEdge
Minimum edge of the area (inclusive)
Definition voxel.h:324
void addArea(const VoxelArea &a)
Definition voxel.h:64
bool contains(s32 i) const
Definition voxel.h:147
VoxelArea intersect(const VoxelArea &a) const
Definition voxel.h:171
static void add_p(const v3s32 &extent, u32 &i, v3s16 a)
Translate index in space.
Definition voxel.h:307
static constexpr s32 MAX_EXTENT
Definition voxel.h:344
s32 index(s16 x, s16 y, s16 z) const
Definition voxel.h:267
VoxelArea(const v3s16 &min_edge, const v3s16 &max_edge)
Definition voxel.h:46
const v3s32 & getExtent() const
Definition voxel.h:110
static void add_z(const v3s32 &extent, u32 &i, s16 a)
Translate index in the Z coordinate.
Definition voxel.h:299
u32 getVolume() const
Definition voxel.h:120
VoxelArea operator-(const v3s16 &off) const
Definition voxel.h:163
bool contains(const VoxelArea &a) const
Definition voxel.h:126
static void add_y(const v3s32 &extent, u32 &i, s16 a)
Translate index in the Y coordinate.
Definition voxel.h:291
void cacheExtent()
Definition voxel.h:330
void addPoint(const v3s16 &p)
Definition voxel.h:80
v3s16 MaxEdge
Maximum edge of the area (inclusive)
Definition voxel.h:327
static void add_x(const v3s32 &extent, u32 &i, s16 a)
Translate index in the X coordinate.
Definition voxel.h:282
VoxelArea operator+(const v3s16 &off) const
Definition voxel.h:158
bool operator==(const VoxelArea &other) const
Definition voxel.h:152
s32 index(v3s16 p) const
Definition voxel.h:274
bool hasEmptyExtent() const
Definition voxel.h:115
void print(std::ostream &o) const
Definition voxel.h:315
void diff(const VoxelArea &a, C &result) const
Returns 0-6 non-overlapping areas that can be added to a to make up this area.
Definition voxel.h:202
void pad(const v3s16 &d)
Definition voxel.h:99
bool contains(v3s16 p) const
Definition voxel.h:139
v3s32 m_cache_extent
Definition voxel.h:345
constexpr VoxelArea()=default
VoxelArea(const v3s16 &p)
Definition voxel.h:53
MapNode * m_data
Definition voxel.h:504
MapNode getNodeNoEx(const v3s16 &p)
Definition voxel.h:388
void copyFrom(MapNode *src, bool is_mono_block, const VoxelArea &src_area, v3s16 from_pos, v3s16 to_pos, const v3s16 &size)
Definition voxel.cpp:179
void print(std::ostream &o, const NodeDefManager *nodemgr, VoxelPrintMode mode=VOXELPRINT_MATERIAL) const
Definition voxel.cpp:36
const MapNode & getNodeRefUnsafeCheckFlags(const v3s16 &p) const
Definition voxel.h:417
u8 * m_flags
Definition voxel.h:509
void setFlags(const VoxelArea &area, u8 flag)
Definition voxel.cpp:253
void copyTo(MapNode *dst, const VoxelArea &dst_area, v3s16 dst_pos, v3s16 from_pos, const v3s16 &size) const
Definition voxel.cpp:231
void setNode(const v3s16 &p, const MapNode &n)
Definition voxel.h:438
VoxelManipulator()=default
MapNode getNodeNoExNoEmerge(const v3s16 &p) const
Definition voxel.h:401
static const MapNode ContentIgnoreNode
Definition voxel.h:511
bool setNodeNoEmerge(const v3s16 &p, MapNode n)
Definition voxel.h:455
void addArea(const VoxelArea &area)
Definition voxel.cpp:126
bool exists(const v3s16 &p)
Definition voxel.h:432
u8 & getFlagsRefUnsafe(const v3s16 &p)
Definition voxel.h:427
void clearFlags(const VoxelArea &area, u8 flag)
Definition voxel.cpp:270
VoxelArea m_area
Definition voxel.h:498
MapNode & getNodeRefUnsafe(const v3s16 &p)
Definition voxel.h:412
void clear()
Definition voxel.cpp:23
virtual ~VoxelManipulator()
Definition voxel.cpp:18
MapNode getNode(const v3s16 &p)
Definition voxel.h:374
core::vector3d< s32 > v3s32
Definition irr_v3d.h:15
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
#define S16_MAX
Definition irrlichttypes.h:17
#define S16_MIN
Definition irrlichttypes.h:12
#define CONTENT_IGNORE
Definition mapnode.h:57
static std::string p(std::string path)
Definition test_filesys.cpp:64
constexpr v3f x
Definition test_irr_matrix4.cpp:18
constexpr v3f y
Definition test_irr_matrix4.cpp:19
constexpr v3f z
Definition test_irr_matrix4.cpp:20
@ VOXELFLAG_NO_DATA
Definition voxel.h:349
@ VOXELFLAG_CHECKED3
Definition voxel.h:352
@ VOXELFLAG_CHECKED4
Definition voxel.h:353
@ VOXELFLAG_CHECKED1
Definition voxel.h:350
@ VOXELFLAG_CHECKED2
Definition voxel.h:351
VoxelPrintMode
Definition voxel.h:357
@ VOXELPRINT_WATERPRESSURE
Definition voxel.h:360
@ VOXELPRINT_NOTHING
Definition voxel.h:358
@ VOXELPRINT_LIGHT_DAY
Definition voxel.h:361
@ VOXELPRINT_MATERIAL
Definition voxel.h:359
u64 emerge_time
Definition voxel.cpp:16