feat(compat): made roblox xml level files load
This commit is contained in:
parent
5f6ff971d2
commit
6032237e42
4 changed files with 8 additions and 3 deletions
|
@ -47,8 +47,10 @@ void Variant::PushLuaValue(lua_State* state) const {
|
||||||
|
|
||||||
Variant Variant::Deserialize(pugi::xml_node node) {
|
Variant Variant::Deserialize(pugi::xml_node node) {
|
||||||
if (TYPE_MAP.count(node.name()) == 0) {
|
if (TYPE_MAP.count(node.name()) == 0) {
|
||||||
Logger::fatalErrorf("Unknown type for property: '%s'", node.name());
|
// TODO: Make this soft-fail with a result value instead of panicking
|
||||||
panic();
|
Logger::errorf("Unknown type for property: '%s'", node.name());
|
||||||
|
// panic();
|
||||||
|
return Variant();
|
||||||
}
|
}
|
||||||
|
|
||||||
const TypeInfo* type = TYPE_MAP[node.name()];
|
const TypeInfo* type = TYPE_MAP[node.name()];
|
||||||
|
@ -59,6 +61,7 @@ std::map<std::string, const TypeInfo*> TYPE_MAP = {
|
||||||
{ "null", &NULL_TYPE },
|
{ "null", &NULL_TYPE },
|
||||||
{ "bool", &BOOL_TYPE },
|
{ "bool", &BOOL_TYPE },
|
||||||
{ "int", &INT_TYPE },
|
{ "int", &INT_TYPE },
|
||||||
|
{ "token", &INT_TYPE },
|
||||||
{ "float", &FLOAT_TYPE },
|
{ "float", &FLOAT_TYPE },
|
||||||
{ "string", &STRING_TYPE },
|
{ "string", &STRING_TYPE },
|
||||||
{ "Vector3", &Vector3::TYPE },
|
{ "Vector3", &Vector3::TYPE },
|
||||||
|
|
|
@ -34,6 +34,7 @@ typedef std::variant<
|
||||||
class Variant {
|
class Variant {
|
||||||
__VARIANT_TYPE wrapped;
|
__VARIANT_TYPE wrapped;
|
||||||
public:
|
public:
|
||||||
|
inline Variant() : Variant(std::monostate()) {}
|
||||||
template <typename T> Variant(T obj) : wrapped(obj) {}
|
template <typename T> Variant(T obj) : wrapped(obj) {}
|
||||||
template <typename T> T get() { return std::get<T>(wrapped); }
|
template <typename T> T get() { return std::get<T>(wrapped); }
|
||||||
std::string ToString() const;
|
std::string ToString() const;
|
||||||
|
|
|
@ -65,6 +65,7 @@ std::shared_ptr<DataModel> DataModel::LoadFromFile(std::string path) {
|
||||||
doc.load(inStream);
|
doc.load(inStream);
|
||||||
|
|
||||||
pugi::xml_node rootNode = doc.child("openblocks");
|
pugi::xml_node rootNode = doc.child("openblocks");
|
||||||
|
if (!rootNode) rootNode = doc.child("roblox");
|
||||||
std::shared_ptr<DataModel> newModel = std::make_shared<DataModel>();
|
std::shared_ptr<DataModel> newModel = std::make_shared<DataModel>();
|
||||||
RefStateDeserialize state = std::make_shared<__RefStateDeserialize>();
|
RefStateDeserialize state = std::make_shared<__RefStateDeserialize>();
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ public:
|
||||||
CFrame cframe;
|
CFrame cframe;
|
||||||
|
|
||||||
DEF_PROP_CATEGORY(PART)
|
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_CATEGORY(APPEARANCE)
|
||||||
DEF_PROP Color3 color;
|
DEF_PROP Color3 color;
|
||||||
|
|
Loading…
Add table
Reference in a new issue