22#define CONTENT_MAX UINT16_MAX
30#define MAX_REGISTERED_CONTENT 0x7fffU
39#define CONTENT_UNKNOWN 125
45#define CONTENT_AIR 126
57#define CONTENT_IGNORE 127
98#define LIQUID_LEVEL_MASK 0x07
99#define LIQUID_FLOW_DOWN_MASK 0x08
105#define LIQUID_LEVEL_MAX LIQUID_LEVEL_MASK
106#define LIQUID_LEVEL_SOURCE (LIQUID_LEVEL_MAX+1)
108#define LIQUID_INFINITY_MASK 0x80
111#define LEVELED_MASK 0x7F
112#define LEVELED_MAX LEVELED_MASK
155 return (param0 == other.param0
156 && param1 == other.param1
157 && param2 == other.param2);
161 return !(*
this == other);
197 param1 |= a_light & 0x0f;
201 param1 |= (a_light & 0x0f)<<4;
217 u8 raw_light = getLightRaw(bank, f);
218 return MYMAX(f.light_source, raw_light);
229 return bank ==
LIGHTBANK_DAY ? param1 & 0x0f : (param1 >> 4) & 0x0f;
239 return blend_light(daylight_factor, lightday, lightnight);
242 u8 getFaceDir(
const NodeDefManager *nodemgr,
bool allow_wallmounted =
false)
const;
256 u8 getNeighbors(
v3s16 p,
Map *map)
const;
261 void getNodeBoxes(
const NodeDefManager *nodemgr, std::vector<aabb3f> *boxes,
262 u8 neighbors = 0)
const;
268 std::vector<aabb3f> *boxes, u8 neighbors = 0)
const;
274 std::vector<aabb3f> *boxes, u8 neighbors = 0)
const;
288 static u32 serializedLength(u8 version);
289 void serialize(u8 *dest, u8 version)
const;
290 void deSerialize(
const u8 *source, u8 version);
301 const MapNode *nodes, u32 nodecount,
302 u8 content_width, u8 params_width,
bool is_mono_block =
false);
303 static void deSerializeBulk(std::istream &is,
int version,
305 u8 content_width, u8 params_width);
309 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:87
@ ROTATE_180
Definition mapnode.h:90
@ ROTATE_270
Definition mapnode.h:91
@ ROTATE_RAND
Definition mapnode.h:92
@ ROTATE_90
Definition mapnode.h:89
@ ROTATE_0
Definition mapnode.h:88
u16 content_t
Definition mapnode.h:21
LightBank
Definition mapnode.h:79
@ LIGHTBANK_NIGHT
Definition mapnode.h:81
@ LIGHTBANK_DAY
Definition mapnode.h:80
bool light_propagates
Definition mapnode.h:65
bool sunlight_propagates
Definition mapnode.h:66
u8 light_source
Definition mapnode.h:63
bool operator!=(const ContentLightingFlags &other) const
Definition mapnode.h:74
bool operator==(const ContentLightingFlags &other) const
Definition mapnode.h:68
bool has_light
Definition mapnode.h:64
u8 getParam2() const noexcept
Definition mapnode.h:181
bool isLightDayNightEq(ContentLightingFlags f) const noexcept
Check if the light value for night differs from the light value for day.
Definition mapnode.h:210
content_t getContent() const noexcept
Definition mapnode.h:165
bool operator==(const MapNode &other) const noexcept
Definition mapnode.h:153
u8 param1
Definition mapnode.h:137
u8 param2
Definition mapnode.h:143
u8 getParam1() const noexcept
Definition mapnode.h:173
void setContent(content_t c) noexcept
Definition mapnode.h:169
void setLight(LightBank bank, u8 a_light, ContentLightingFlags f) noexcept
Definition mapnode.h:190
u8 getLightRaw(LightBank bank, ContentLightingFlags f) const noexcept
Definition mapnode.h:226
u8 getLight(LightBank bank, ContentLightingFlags f) const noexcept
Definition mapnode.h:215
u16 param0
Definition mapnode.h:127
void setParam2(u8 p) noexcept
Definition mapnode.h:185
constexpr MapNode(content_t content, u8 a_param1=0, u8 a_param2=0) noexcept
Definition mapnode.h:147
void setParam1(u8 p) noexcept
Definition mapnode.h:177
bool operator!=(const MapNode &other) const noexcept
Definition mapnode.h:159
u8 getLightBlend(u32 daylight_factor, ContentLightingFlags f) const
Definition mapnode.h:235
static std::string p(std::string path)
Definition test_filesys.cpp:64