diff --git a/code/AssetLib/Blender/BlenderLoader.cpp b/code/AssetLib/Blender/BlenderLoader.cpp index 82f134048..04c911757 100644 --- a/code/AssetLib/Blender/BlenderLoader.cpp +++ b/code/AssetLib/Blender/BlenderLoader.cpp @@ -325,7 +325,7 @@ void BlenderImporter::ParseSubCollection(const Blender::Scene &in, aiNode *root, // Count number of objects for (std::shared_ptr cur = std::static_pointer_cast(collection->gobject.first); cur; cur = cur->next) { if (cur->ob) { - root_objects.push_back(cur->ob.get()); + root_objects.push_back(cur->ob); } } std::deque root_children; diff --git a/code/AssetLib/Blender/BlenderScene.cpp b/code/AssetLib/Blender/BlenderScene.cpp index 1f5a0b33c..c93d913fc 100644 --- a/code/AssetLib/Blender/BlenderScene.cpp +++ b/code/AssetLib/Blender/BlenderScene.cpp @@ -100,9 +100,18 @@ void Structure::Convert( CollectionObject &dest, const FileDatabase &db) const { - ReadFieldPtr(dest.prev, "*prev", db); ReadFieldPtr(dest.next, "*next", db); - ReadFieldPtr(dest.ob, "*ob", db); + { + //std::shared_ptr prev; + //ReadFieldPtr(prev, "*prev", db); + //dest.prev = prev.get(); + + std::shared_ptr ob; + ReadFieldPtr(ob, "*ob", db); + dest.ob = ob.get(); + } + + db.reader->IncPtr(size); } //-------------------------------------------------------------------------------- diff --git a/code/AssetLib/Blender/BlenderScene.h b/code/AssetLib/Blender/BlenderScene.h index 59f9c30d7..ebc6a27e6 100644 --- a/code/AssetLib/Blender/BlenderScene.h +++ b/code/AssetLib/Blender/BlenderScene.h @@ -107,6 +107,7 @@ namespace Blender { struct Object; struct MTex; struct Image; +struct Collection; #include @@ -147,18 +148,11 @@ struct Group : ElemBase { std::shared_ptr gobject; }; -// ------------------------------------------------------------------------------- -struct Collection : ElemBase { - ID id FAIL; - ListBase gobject; // CollectionObject - ListBase children; // CollectionChild - //ListBase objects; // Objects -}; - // ------------------------------------------------------------------------------- struct CollectionObject : ElemBase { - std::shared_ptr next, prev; - std::shared_ptr ob; + //CollectionObject* prev; + std::shared_ptr next; + Object *ob; }; // ------------------------------------------------------------------------------- @@ -167,6 +161,13 @@ struct CollectionChild : ElemBase { std::shared_ptr collection; }; +// ------------------------------------------------------------------------------- +struct Collection : ElemBase { + ID id FAIL; + ListBase gobject; // CollectionObject + ListBase children; // CollectionChild +}; + // ------------------------------------------------------------------------------- struct World : ElemBase { ID id FAIL;