Commit: fa317eb69c6e7f83cac329f209d7a76916754e76
Author: Dalai Felinto
Date:   Wed Mar 29 21:55:04 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBfa317eb69c6e7f83cac329f209d7a76916754e76

Fix collada exporting for Blender 2.8

Instead of exporting all the scene objects, I'm exporting the scene
layer objects instead.

===================================================================

M       source/blender/blenkernel/BKE_object.h
M       source/blender/blenkernel/intern/object.c
M       source/blender/collada/collada.cpp
M       source/blender/collada/collada.h
M       source/blender/editors/io/io_collada.c
M       source/blender/makesrna/intern/rna_scene_api.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_object.h 
b/source/blender/blenkernel/BKE_object.h
index fe6ee9179d8..ec780ea6f8a 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -255,7 +255,7 @@ typedef enum eObjectSet {
        OB_SET_ALL       /* All Objects      */
 } eObjectSet;
 
-struct LinkNode *BKE_object_relational_superset(struct Scene *scene, 
eObjectSet objectSet, eObRelationTypes includeFilter);
+struct LinkNode *BKE_object_relational_superset(struct Scene *scene, struct 
SceneLayer *scene_layer, eObjectSet objectSet, eObRelationTypes includeFilter);
 struct LinkNode *BKE_object_groups(struct Object *ob);
 void             BKE_object_groups_clear(struct Object *object);
 
diff --git a/source/blender/blenkernel/intern/object.c 
b/source/blender/blenkernel/intern/object.c
index 5f1e47e0f5a..dda26eb3ca2 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -3300,17 +3300,17 @@ static void obrel_list_add(LinkNode **links, Object *ob)
 }
 
 /*
- * Iterates over all objects of the given scene.
+ * Iterates over all objects of the given scene layer.
  * Depending on the eObjectSet flag:
  * collect either OB_SET_ALL, OB_SET_VISIBLE or OB_SET_SELECTED objects.
  * If OB_SET_VISIBLE or OB_SET_SELECTED are collected, 
  * then also add related objects according to the given includeFilters.
  */
-LinkNode *BKE_object_relational_superset(struct Scene *scene, eObjectSet 
objectSet, eObRelationTypes includeFilter)
+LinkNode *BKE_object_relational_superset(struct Scene *scene, struct 
SceneLayer *scene_layer, eObjectSet objectSet, eObRelationTypes includeFilter)
 {
        LinkNode *links = NULL;
 
-       BaseLegacy *base;
+       Base *base;
 
        /* Remove markers from all objects */
        for (base = scene->base.first; base; base = base->next) {
@@ -3318,15 +3318,15 @@ LinkNode *BKE_object_relational_superset(struct Scene 
*scene, eObjectSet objectS
        }
 
        /* iterate over all selected and visible objects */
-       for (base = scene->base.first; base; base = base->next) {
+       for (base = scene_layer->object_bases.first; base; base = base->next) {
                if (objectSet == OB_SET_ALL) {
                        /* as we get all anyways just add it */
                        Object *ob = base->object;
                        obrel_list_add(&links, ob);
                }
                else {
-                       if ((objectSet == OB_SET_SELECTED && 
TESTBASELIB_BGMODE(((View3D *)NULL), scene, base)) ||
-                           (objectSet == OB_SET_VISIBLE  && 
BASE_EDITABLE_BGMODE(((View3D *)NULL), scene, base)))
+                       if ((objectSet == OB_SET_SELECTED && 
TESTBASELIB_BGMODE_NEW(base)) ||
+                           (objectSet == OB_SET_VISIBLE  && 
BASE_EDITABLE_BGMODE_NEW(base)))
                        {
                                Object *ob = base->object;
 
@@ -3354,9 +3354,9 @@ LinkNode *BKE_object_relational_superset(struct Scene 
*scene, eObjectSet objectS
 
                                /* child relationship */
                                if (includeFilter & (OB_REL_CHILDREN | 
OB_REL_CHILDREN_RECURSIVE)) {
-                                       BaseLegacy *local_base;
-                                       for (local_base = scene->base.first; 
local_base; local_base = local_base->next) {
-                                               if 
(BASE_EDITABLE_BGMODE(((View3D *)NULL), scene, local_base)) {
+                                       Base *local_base;
+                                       for (local_base = 
scene_layer->object_bases.first; local_base; local_base = local_base->next) {
+                                               if 
(BASE_EDITABLE_BGMODE_NEW(local_base)) {
 
                                                        Object *child = 
local_base->object;
                                                        if 
(obrel_list_test(child)) {
diff --git a/source/blender/collada/collada.cpp 
b/source/blender/collada/collada.cpp
index bfe3180909b..42d3758d121 100644
--- a/source/blender/collada/collada.cpp
+++ b/source/blender/collada/collada.cpp
@@ -68,6 +68,7 @@ int collada_import(bContext *C,
 }
 
 int collada_export(Scene *sce,
+                   SceneLayer *scene_layer,
                    const char *filepath,
 
                    int apply_modifiers,
@@ -124,7 +125,7 @@ int collada_export(Scene *sce,
        if (export_settings.include_children) includeFilter |= 
OB_REL_CHILDREN_RECURSIVE;
 
        eObjectSet objectSet = (export_settings.selected) ? OB_SET_SELECTED : 
OB_SET_ALL;
-       export_settings.export_set = BKE_object_relational_superset(sce, 
objectSet, (eObRelationTypes)includeFilter);
+       export_settings.export_set = BKE_object_relational_superset(sce, 
scene_layer, objectSet, (eObRelationTypes)includeFilter);
        int export_count = BLI_linklist_count(export_settings.export_set);
 
        if (export_count == 0) {
diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h
index 8035af59c8b..c8e6c99206a 100644
--- a/source/blender/collada/collada.h
+++ b/source/blender/collada/collada.h
@@ -48,6 +48,7 @@ typedef enum BC_export_transformation_type {
 
 struct bContext;
 struct Scene;
+struct SceneLayer;
 
 /*
  * both return 1 on success, 0 on error
@@ -63,6 +64,7 @@ int collada_import(struct bContext *C,
                                   int keep_bind_info);
 
 int collada_export(struct Scene *sce,
+                   struct SceneLayer *scene_layer,
                    const char *filepath,
                    int apply_modifiers,
                    BC_export_mesh_type export_mesh_type,
diff --git a/source/blender/editors/io/io_collada.c 
b/source/blender/editors/io/io_collada.c
index 139c9817437..35d7c4f7083 100644
--- a/source/blender/editors/io/io_collada.c
+++ b/source/blender/editors/io/io_collada.c
@@ -159,6 +159,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator 
*op)
 
 
        export_count = collada_export(CTX_data_scene(C),
+               CTX_data_scene_layer(C),
                filepath,
                apply_modifiers,
                export_mesh_type,
diff --git a/source/blender/makesrna/intern/rna_scene_api.c 
b/source/blender/makesrna/intern/rna_scene_api.c
index 9b202120b82..37d9c0747fd 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -266,6 +266,7 @@ static void rna_Scene_alembic_export(
 /* Note: This definition must match to the generated function call */
 static void rna_Scene_collada_export(
         Scene *scene,
+        bContext *C,
         const char *filepath, 
         int apply_modifiers,
 
@@ -289,6 +290,7 @@ static void rna_Scene_collada_export(
         int keep_bind_info)
 {
        collada_export(scene,
+               CTX_data_scene_layer(C),
                filepath,
 
                apply_modifiers,
@@ -432,6 +434,8 @@ void RNA_api_scene(StructRNA *srna)
                        "Keep Bind Info",
                        "Store bind pose information in custom bone properties 
for later use during Collada export");
 
+       RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+
 #endif
 
 #ifdef WITH_ALEMBIC

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to