diff --git a/res/content/base/models/cube.obj b/res/content/base/models/cube.obj index 26e6ba76..615773c1 100644 --- a/res/content/base/models/cube.obj +++ b/res/content/base/models/cube.obj @@ -36,7 +36,7 @@ vn 1.0000 -0.0000 0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 vn 0.0000 0.0000 -1.0000 -usemtl blocks/lamp +usemtl $0 s off f 1/1/1 2/2/1 3/3/1 4/4/1 f 5/5/2 8/6/2 7/7/2 6/8/2 diff --git a/res/content/base/models/item.mtl b/res/content/base/models/item.mtl deleted file mode 100644 index 379df14c..00000000 --- a/res/content/base/models/item.mtl +++ /dev/null @@ -1,12 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Material -Ns 96.078431 -Ka 1.000000 1.000000 1.000000 -Kd 0.640000 0.640000 0.640000 -Ks 0.500000 0.500000 0.500000 -Ke 0.000000 0.000000 0.000000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/res/content/base/scripts/components/drop.lua b/res/content/base/scripts/components/drop.lua index 6c8c4a1a..53e6c626 100644 --- a/res/content/base/scripts/components/drop.lua +++ b/res/content/base/scripts/components/drop.lua @@ -15,7 +15,7 @@ function on_fall() end function on_trigger_enter(index, oid) - if ready then + if ready and oid == 0 then entity:despawn() end end diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index b7fe8ccf..0fd5a36d 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -214,8 +214,10 @@ assetload::postfunc assetload::model( auto model = obj::parse(path.u8string(), text).release(); return [=](Assets* assets) { for (auto& mesh : model->meshes) { - auto filename = TEXTURES_FOLDER+"/"+mesh.texture; - loader->add(AssetType::texture, filename, mesh.texture, nullptr); + if (mesh.texture.find('$') == std::string::npos) { + auto filename = TEXTURES_FOLDER+"/"+mesh.texture; + loader->add(AssetType::texture, filename, mesh.texture, nullptr); + } } assets->store(std::unique_ptr(model), name); }; diff --git a/src/objects/rigging.cpp b/src/objects/rigging.cpp new file mode 100644 index 00000000..9b6cd14f --- /dev/null +++ b/src/objects/rigging.cpp @@ -0,0 +1,10 @@ +#include "rigging.hpp" + +using namespace rigging; + +RigNode::RigNode(size_t index, std::string name, std::vector> subnodes) + : index(index), name(std::move(name)), subnodes(std::move(subnodes)) { +} + +RigConfig::RigConfig(std::unique_ptr root) : root(std::move(root)) { +} diff --git a/src/objects/rigging.hpp b/src/objects/rigging.hpp index a509533b..717aef87 100644 --- a/src/objects/rigging.hpp +++ b/src/objects/rigging.hpp @@ -5,7 +5,9 @@ #include #include +#include #include +#include namespace rigging { struct Rig; @@ -15,19 +17,33 @@ namespace rigging { }; class RigNode { - uint index; + size_t index; + std::string name; std::vector> subnodes; public: - RigNode(uint index); + RigNode(size_t index, std::string name, std::vector> subnodes); + + size_t getIndex() const { + return index; + } + + const auto& getSubnodes() const { + return subnodes; + } }; class RigConfig { std::unique_ptr root; + std::unordered_map indices; + std::vector nodes; + public: + RigConfig(std::unique_ptr root); }; struct Rig { RigConfig* config; Pose pose; + std::vector textures; }; };