1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-06 17:41:04 +00:00

Replace object visual by enum (#15681)

This commit is contained in:
cx384 2025-03-06 21:02:11 +01:00 committed by GitHub
parent 63701de45f
commit 18ac8b20fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 86 additions and 29 deletions

View file

@ -8,11 +8,25 @@
#include "exceptions.h"
#include "log.h"
#include "util/serialize.h"
#include "util/enum_string.h"
#include <sstream>
#include <tuple>
static const video::SColor NULL_BGCOLOR{0, 1, 1, 1};
const struct EnumString es_ObjectVisual[] =
{
{OBJECTVISUAL_UNKNOWN, "unknown"},
{OBJECTVISUAL_SPRITE, "sprite"},
{OBJECTVISUAL_UPRIGHT_SPRITE, "upright_sprite"},
{OBJECTVISUAL_CUBE, "cube"},
{OBJECTVISUAL_MESH, "mesh"},
{OBJECTVISUAL_ITEM, "item"},
{OBJECTVISUAL_WIELDITEM, "wielditem"},
{OBJECTVISUAL_NODE, "node"},
{0, nullptr},
};
ObjectProperties::ObjectProperties()
{
textures.emplace_back("no_texture.png");
@ -26,7 +40,7 @@ std::string ObjectProperties::dump() const
os << ", physical=" << physical;
os << ", collideWithObjects=" << collideWithObjects;
os << ", collisionbox=" << collisionbox.MinEdge << "," << collisionbox.MaxEdge;
os << ", visual=" << visual;
os << ", visual=" << enum_to_string(es_ObjectVisual, visual);
os << ", mesh=" << mesh;
os << ", visual_size=" << visual_size;
os << ", textures=[";
@ -137,7 +151,10 @@ void ObjectProperties::serialize(std::ostream &os) const
writeV3F32(os, selectionbox.MinEdge);
writeV3F32(os, selectionbox.MaxEdge);
Pointabilities::serializePointabilityType(os, pointable);
os << serializeString16(visual);
// Convert to string for compatibility
os << serializeString16(enum_to_string(es_ObjectVisual, visual));
writeV3F32(os, visual_size);
writeU16(os, textures.size());
for (const std::string &texture : textures) {
@ -222,7 +239,14 @@ void ObjectProperties::deSerialize(std::istream &is)
selectionbox.MinEdge = readV3F32(is);
selectionbox.MaxEdge = readV3F32(is);
pointable = Pointabilities::deSerializePointabilityType(is);
visual = deSerializeString16(is);
std::string visual_string{deSerializeString16(is)};
if (!string_to_enum(es_ObjectVisual, visual, visual_string)) {
infostream << "ObjectProperties::deSerialize(): visual \"" << visual_string
<< "\" not supported" << std::endl;
visual = OBJECTVISUAL_UNKNOWN;
}
visual_size = readV3F32(is);
textures.clear();
u32 texture_count = readU16(is);