diff options
Diffstat (limited to 'source/blender/io/collada/BlenderContext.cpp')
-rw-r--r-- | source/blender/io/collada/BlenderContext.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/source/blender/io/collada/BlenderContext.cpp b/source/blender/io/collada/BlenderContext.cpp index 5f54f38a0ab..e76eea24dca 100644 --- a/source/blender/io/collada/BlenderContext.cpp +++ b/source/blender/io/collada/BlenderContext.cpp @@ -11,19 +11,20 @@ #include "BKE_scene.h" -bool bc_is_base_node(LinkNode *export_set, Object *ob, ViewLayer *view_layer) +bool bc_is_base_node(LinkNode *export_set, Object *ob, const Scene *scene, ViewLayer *view_layer) { - Object *root = bc_get_highest_exported_ancestor_or_self(export_set, ob, view_layer); + Object *root = bc_get_highest_exported_ancestor_or_self(export_set, ob, scene, view_layer); return (root == ob); } Object *bc_get_highest_exported_ancestor_or_self(LinkNode *export_set, Object *ob, + const Scene *scene, ViewLayer *view_layer) { Object *ancestor = ob; while (ob->parent) { - if (bc_is_in_Export_set(export_set, ob->parent, view_layer)) { + if (bc_is_in_Export_set(export_set, ob->parent, scene, view_layer)) { ancestor = ob->parent; } ob = ob->parent; @@ -31,7 +32,10 @@ Object *bc_get_highest_exported_ancestor_or_self(LinkNode *export_set, return ancestor; } -void bc_get_children(std::vector<Object *> &child_set, Object *ob, ViewLayer *view_layer) +void bc_get_children(std::vector<Object *> &child_set, + Object *ob, + const Scene *scene, + ViewLayer *view_layer) { Base *base; for (base = (Base *)view_layer->object_bases.first; base; base = base->next) { @@ -51,7 +55,10 @@ void bc_get_children(std::vector<Object *> &child_set, Object *ob, ViewLayer *vi } } -bool bc_is_in_Export_set(LinkNode *export_set, Object *ob, ViewLayer *view_layer) +bool bc_is_in_Export_set(LinkNode *export_set, + Object *ob, + const Scene *scene, + ViewLayer *view_layer) { bool to_export = (BLI_linklist_index(export_set, ob) != -1); @@ -60,9 +67,9 @@ bool bc_is_in_Export_set(LinkNode *export_set, Object *ob, ViewLayer *view_layer * export list, but it contains children to export. */ std::vector<Object *> children; - bc_get_children(children, ob, view_layer); + bc_get_children(children, ob, scene, view_layer); for (Object *child : children) { - if (bc_is_in_Export_set(export_set, child, view_layer)) { + if (bc_is_in_Export_set(export_set, child, scene, view_layer)) { to_export = true; break; } |