#include <iostream>
#include <map>
#include <vector>
+#include "util/Optional.h"
struct ObjectProperties
{
- s16 hp_max = 1;
+ u16 hp_max = 1;
u16 breath_max = 0;
bool physical = false;
bool collideWithObjects = true;
- float weight = 5.0f;
// Values are BS=1
aabb3f collisionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f);
aabb3f selectionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f);
bool pointable = true;
std::string visual = "sprite";
std::string mesh = "";
- v2f visual_size = v2f(1, 1);
+ v3f visual_size = v3f(1, 1, 1);
std::vector<std::string> textures;
+ std::string damage_texture_modifier = "^[brighten";
std::vector<video::SColor> colors;
v2s16 spritediv = v2s16(1, 1);
v2s16 initial_sprite_basepos;
bool is_visible = true;
bool makes_footstep_sound = false;
f32 stepheight = 0.0f;
- bool can_zoom = true;
float automatic_rotate = 0.0f;
bool automatic_face_movement_dir = false;
f32 automatic_face_movement_dir_offset = 0.0f;
s8 glow = 0;
std::string nametag = "";
video::SColor nametag_color = video::SColor(255, 255, 255, 255);
+ Optional<video::SColor> nametag_bgcolor = nullopt;
f32 automatic_face_movement_max_rotation_per_sec = -1.0f;
std::string infotext;
//! For dropped items, this contains item information.
std::string wield_item;
bool static_save = true;
+ float eye_height = 1.625f;
+ float zoom_fov = 0.0f;
+ bool use_texture_alpha = false;
+ bool shaded = true;
+ bool show_on_minimap = false;
ObjectProperties();
std::string dump();
+ // check limits of some important properties (strings) that'd cause exceptions later on
+ bool validate();
void serialize(std::ostream &os) const;
void deSerialize(std::istream &is);
};