diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-03-29 22:55:04 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-04-04 18:45:55 +0300 |
commit | fa317eb69c6e7f83cac329f209d7a76916754e76 (patch) | |
tree | c5986508e8fb5e92280e37f33efa8cbb3b8a0cab /source/blender | |
parent | 69f7b513b5395931d2ae146c43c0661f8c95732e (diff) |
Fix collada exporting for Blender 2.8
Instead of exporting all the scene objects, I'm exporting the scene
layer objects instead.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_object.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 18 | ||||
-rw-r--r-- | source/blender/collada/collada.cpp | 3 | ||||
-rw-r--r-- | source/blender/collada/collada.h | 2 | ||||
-rw-r--r-- | source/blender/editors/io/io_collada.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene_api.c | 4 |
6 files changed, 19 insertions, 11 deletions
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 |