1 /* 2 Minetest 3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation; either version 2.1 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License along 16 with this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #pragma once 21 22 #include <string> 23 #include "irrlichttypes_bloated.h" 24 #include <iostream> 25 #include <map> 26 #include <vector> 27 #include "util/Optional.h" 28 29 struct ObjectProperties 30 { 31 u16 hp_max = 1; 32 u16 breath_max = 0; 33 bool physical = false; 34 bool collideWithObjects = true; 35 // Values are BS=1 36 aabb3f collisionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f); 37 aabb3f selectionbox = aabb3f(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f); 38 bool pointable = true; 39 std::string visual = "sprite"; 40 std::string mesh = ""; 41 v3f visual_size = v3f(1, 1, 1); 42 std::vector<std::string> textures; 43 std::string damage_texture_modifier = "^[brighten"; 44 std::vector<video::SColor> colors; 45 v2s16 spritediv = v2s16(1, 1); 46 v2s16 initial_sprite_basepos; 47 bool is_visible = true; 48 bool makes_footstep_sound = false; 49 f32 stepheight = 0.0f; 50 float automatic_rotate = 0.0f; 51 bool automatic_face_movement_dir = false; 52 f32 automatic_face_movement_dir_offset = 0.0f; 53 bool backface_culling = true; 54 s8 glow = 0; 55 std::string nametag = ""; 56 video::SColor nametag_color = video::SColor(255, 255, 255, 255); 57 Optional<video::SColor> nametag_bgcolor = nullopt; 58 f32 automatic_face_movement_max_rotation_per_sec = -1.0f; 59 std::string infotext; 60 //! For dropped items, this contains item information. 61 std::string wield_item; 62 bool static_save = true; 63 float eye_height = 1.625f; 64 float zoom_fov = 0.0f; 65 bool use_texture_alpha = false; 66 bool shaded = true; 67 bool show_on_minimap = false; 68 69 ObjectProperties(); 70 std::string dump(); 71 void serialize(std::ostream &os) const; 72 void deSerialize(std::istream &is); 73 }; 74