Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-03-29 22:55:04 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-04-04 18:45:55 +0300
commitfa317eb69c6e7f83cac329f209d7a76916754e76 (patch)
treec5986508e8fb5e92280e37f33efa8cbb3b8a0cab /source/blender
parent69f7b513b5395931d2ae146c43c0661f8c95732e (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.h2
-rw-r--r--source/blender/blenkernel/intern/object.c18
-rw-r--r--source/blender/collada/collada.cpp3
-rw-r--r--source/blender/collada/collada.h2
-rw-r--r--source/blender/editors/io/io_collada.c1
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c4
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