Browse Source

Reorder ObjectProperties struct

sfan5 1 month ago
parent
commit
585ca90ae0
2 changed files with 36 additions and 25 deletions
  1. 1 1
      src/object_properties.cpp
  2. 35 24
      src/object_properties.h

+ 1 - 1
src/object_properties.cpp

@@ -32,7 +32,7 @@ ObjectProperties::ObjectProperties()
 	colors.emplace_back(255,255,255,255);
 }
 
-std::string ObjectProperties::dump()
+std::string ObjectProperties::dump() const
 {
 	std::ostringstream os(std::ios::binary);
 	os << "hp_max=" << hp_max;

+ 35 - 24
src/object_properties.h

@@ -29,49 +29,60 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 struct ObjectProperties
 {
-	u16 hp_max = 1;
-	u16 breath_max = 0;
-	bool physical = false;
-	bool collideWithObjects = true;
+	/* member variables ordered roughly by size */
+
+	std::vector<std::string> textures;
+	std::vector<video::SColor> colors;
 	// Values are BS=1
 	aabb3f collisionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f);
+	// Values are BS=1
 	aabb3f selectionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f);
-	bool rotate_selectionbox = false;
-	PointabilityType pointable = PointabilityType::POINTABLE;
 	std::string visual = "sprite";
-	std::string mesh = "";
-	v3f visual_size = v3f(1, 1, 1);
-	std::vector<std::string> textures;
+	std::string mesh;
 	std::string damage_texture_modifier = "^[brighten";
-	std::vector<video::SColor> colors;
+	std::string nametag;
+	std::string infotext;
+	// For dropped items, this contains the serialized item.
+	std::string wield_item;
+	v3f visual_size = v3f(1, 1, 1);
+	video::SColor nametag_color = video::SColor(255, 255, 255, 255);
+	std::optional<video::SColor> nametag_bgcolor;
 	v2s16 spritediv = v2s16(1, 1);
 	v2s16 initial_sprite_basepos;
-	bool is_visible = true;
-	bool makes_footstep_sound = false;
 	f32 stepheight = 0.0f;
 	float automatic_rotate = 0.0f;
-	bool automatic_face_movement_dir = false;
 	f32 automatic_face_movement_dir_offset = 0.0f;
-	bool backface_culling = true;
-	s8 glow = 0;
-	std::string nametag = "";
-	video::SColor nametag_color = video::SColor(255, 255, 255, 255);
-	std::optional<video::SColor> nametag_bgcolor = std::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;
+	u16 hp_max = 1;
+	u16 breath_max = 0;
+	s8 glow = 0;
+	PointabilityType pointable = PointabilityType::POINTABLE;
+	// In a future protocol these could be a flag field.
+	bool physical = false;
+	bool collideWithObjects = true;
+	bool rotate_selectionbox = false;
+	bool is_visible = true;
+	bool makes_footstep_sound = false;
+	bool automatic_face_movement_dir = false;
+	bool backface_culling = true;
+	bool static_save = true;
 	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
+
+	std::string dump() const;
+
+	/**
+	 * Check limits of some important properties that'd cause exceptions later on.
+	 * Errornous values are discarded after printing a warning.
+	 * @return true if a problem was found
+	*/
 	bool validate();
+
 	void serialize(std::ostream &os) const;
 	void deSerialize(std::istream &is);
 };