17#define CONTENT_MAX UINT16_MAX
34#define CONTENT_UNKNOWN 125
40#define CONTENT_AIR 126
52#define CONTENT_IGNORE 127
93#define LIQUID_LEVEL_MASK 0x07
94#define LIQUID_FLOW_DOWN_MASK 0x08
97#define LIQUID_LEVEL_MAX LIQUID_LEVEL_MASK
98#define LIQUID_LEVEL_SOURCE (LIQUID_LEVEL_MAX+1)
100#define LIQUID_INFINITY_MASK 0x80
103#define LEVELED_MASK 0x7F
104#define LEVELED_MAX LEVELED_MASK
147 return (param0 == other.param0
148 && param1 == other.param1
149 && param2 == other.param2);
153 return !(*
this == other);
189 param1 |= a_light & 0x0f;
193 param1 |= (a_light & 0x0f)<<4;
209 u8 raw_light = getLightRaw(bank, f);
210 return MYMAX(f.light_source, raw_light);
221 return bank ==
LIGHTBANK_DAY ? param1 & 0x0f : (param1 >> 4) & 0x0f;
231 return blend_light(daylight_factor, lightday, lightnight);
234 u8 getFaceDir(
const NodeDefManager *nodemgr,
bool allow_wallmounted =
false)
const;
248 u8 getNeighbors(
v3s16 p,
Map *map)
const;
253 void getNodeBoxes(
const NodeDefManager *nodemgr, std::vector<aabb3f> *boxes,
254 u8 neighbors = 0)
const;
260 std::vector<aabb3f> *boxes, u8 neighbors = 0)
const;
266 std::vector<aabb3f> *boxes, u8 neighbors = 0)
const;
280 static u32 serializedLength(u8 version);
281 void serialize(u8 *dest, u8 version)
const;
282 void deSerialize(
const u8 *source, u8 version);
293 const MapNode *nodes, u32 nodecount,
294 u8 content_width, u8 params_width,
bool is_mono_block =
false);
295 static void deSerializeBulk(std::istream &is,
int version,
297 u8 content_width, u8 params_width);
301 void deSerialize_pre22(
const u8 *source, u8 version);
#define MYMAX(a, b)
Definition basic_macros.h:11
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:509
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
u8 blend_light(u32 daylight_factor, u8 lightday, u8 lightnight)
Definition light.h:61
Rotation
Definition mapnode.h:82
@ ROTATE_180
Definition mapnode.h:85
@ ROTATE_270
Definition mapnode.h:86
@ ROTATE_RAND
Definition mapnode.h:87
@ ROTATE_90
Definition mapnode.h:84
@ ROTATE_0
Definition mapnode.h:83
static constexpr content_t MAX_REGISTERED_CONTENT
Definition mapnode.h:25
#define CONTENT_MAX
Definition mapnode.h:17
u16 content_t
Definition mapnode.h:16
LightBank
Definition mapnode.h:74
@ LIGHTBANK_NIGHT
Definition mapnode.h:76
@ LIGHTBANK_DAY
Definition mapnode.h:75
bool light_propagates
Definition mapnode.h:60
bool sunlight_propagates
Definition mapnode.h:61
u8 light_source
Definition mapnode.h:58
bool operator!=(const ContentLightingFlags &other) const
Definition mapnode.h:69
bool operator==(const ContentLightingFlags &other) const
Definition mapnode.h:63
bool has_light
Definition mapnode.h:59
u8 getParam2() const noexcept
Definition mapnode.h:173
bool isLightDayNightEq(ContentLightingFlags f) const noexcept
Check if the light value for night differs from the light value for day.
Definition mapnode.h:202
content_t getContent() const noexcept
Definition mapnode.h:157
bool operator==(const MapNode &other) const noexcept
Definition mapnode.h:145
u8 param1
Definition mapnode.h:129
u8 param2
Definition mapnode.h:135
u8 getParam1() const noexcept
Definition mapnode.h:165
void setContent(content_t c) noexcept
Definition mapnode.h:161
void setLight(LightBank bank, u8 a_light, ContentLightingFlags f) noexcept
Definition mapnode.h:182
u8 getLightRaw(LightBank bank, ContentLightingFlags f) const noexcept
Definition mapnode.h:218
u8 getLight(LightBank bank, ContentLightingFlags f) const noexcept
Definition mapnode.h:207
u16 param0
Definition mapnode.h:119
void setParam2(u8 p) noexcept
Definition mapnode.h:177
constexpr MapNode(content_t content, u8 a_param1=0, u8 a_param2=0) noexcept
Definition mapnode.h:139
void setParam1(u8 p) noexcept
Definition mapnode.h:169
bool operator!=(const MapNode &other) const noexcept
Definition mapnode.h:151
u8 getLightBlend(u32 daylight_factor, ContentLightingFlags f) const
Definition mapnode.h:227
static std::string p(std::string path)
Definition test_filesys.cpp:64