diff --git a/core/src/datatypes/variant.cpp b/core/src/datatypes/variant.cpp index 5b230b1..1cea7ad 100644 --- a/core/src/datatypes/variant.cpp +++ b/core/src/datatypes/variant.cpp @@ -47,8 +47,10 @@ void Variant::PushLuaValue(lua_State* state) const { Variant Variant::Deserialize(pugi::xml_node node) { if (TYPE_MAP.count(node.name()) == 0) { - Logger::fatalErrorf("Unknown type for property: '%s'", node.name()); - panic(); + // TODO: Make this soft-fail with a result value instead of panicking + Logger::errorf("Unknown type for property: '%s'", node.name()); + // panic(); + return Variant(); } const TypeInfo* type = TYPE_MAP[node.name()]; @@ -59,6 +61,7 @@ std::map TYPE_MAP = { { "null", &NULL_TYPE }, { "bool", &BOOL_TYPE }, { "int", &INT_TYPE }, + { "token", &INT_TYPE }, { "float", &FLOAT_TYPE }, { "string", &STRING_TYPE }, { "Vector3", &Vector3::TYPE }, diff --git a/core/src/datatypes/variant.h b/core/src/datatypes/variant.h index 013fc67..925cfdb 100644 --- a/core/src/datatypes/variant.h +++ b/core/src/datatypes/variant.h @@ -34,6 +34,7 @@ typedef std::variant< class Variant { __VARIANT_TYPE wrapped; public: + inline Variant() : Variant(std::monostate()) {} template Variant(T obj) : wrapped(obj) {} template T get() { return std::get(wrapped); } std::string ToString() const; diff --git a/core/src/objects/datamodel.cpp b/core/src/objects/datamodel.cpp index 1b6e1f2..bc65105 100644 --- a/core/src/objects/datamodel.cpp +++ b/core/src/objects/datamodel.cpp @@ -65,6 +65,7 @@ std::shared_ptr DataModel::LoadFromFile(std::string path) { doc.load(inStream); pugi::xml_node rootNode = doc.child("openblocks"); + if (!rootNode) rootNode = doc.child("roblox"); std::shared_ptr newModel = std::make_shared(); RefStateDeserialize state = std::make_shared<__RefStateDeserialize>(); diff --git a/core/src/objects/part.h b/core/src/objects/part.h index 27c7987..8067914 100644 --- a/core/src/objects/part.h +++ b/core/src/objects/part.h @@ -58,7 +58,7 @@ public: CFrame cframe; DEF_PROP_CATEGORY(PART) - DEF_PROP_(on_update=onUpdated) glm::vec3 size; + DEF_PROP_(name="size", on_update=onUpdated) glm::vec3 size; DEF_PROP_CATEGORY(APPEARANCE) DEF_PROP Color3 color;