[Bf-blender-cvs] [376fc19b240] blender2.8: fix:T53271 now using the context scene layer as requested

Gaia Clary noreply at git.blender.org
Fri Jan 26 13:37:58 CET 2018


Commit: 376fc19b240299857b088a1a21ced7e8b9cceacc
Author: Gaia Clary
Date:   Fri Jan 26 13:13:54 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB376fc19b240299857b088a1a21ced7e8b9cceacc

fix:T53271 now using the context scene layer as requested

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

M	source/blender/collada/ArmatureImporter.cpp
M	source/blender/collada/ArmatureImporter.h
M	source/blender/collada/DocumentImporter.cpp
M	source/blender/collada/DocumentImporter.h
M	source/blender/collada/MeshImporter.cpp
M	source/blender/collada/MeshImporter.h
M	source/blender/collada/SkinInfo.cpp
M	source/blender/collada/SkinInfo.h
M	source/blender/collada/collada_utils.cpp
M	source/blender/collada/collada_utils.h

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

diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp
index 9c8b8fc25d6..8832e0fd577 100644
--- a/source/blender/collada/ArmatureImporter.cpp
+++ b/source/blender/collada/ArmatureImporter.cpp
@@ -55,9 +55,10 @@ static const char *bc_get_joint_name(T *node)
 }
 
 
-ArmatureImporter::ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, Scene *sce, const ImportSettings *import_settings) :
+ArmatureImporter::ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, Scene *sce, ViewLayer *view_layer, const ImportSettings *import_settings) :
 	TransformReader(conv),
 	scene(sce),
+	view_layer(view_layer),
 	unit_converter(conv),
 	import_settings(import_settings),
 	empty(NULL), 
@@ -411,7 +412,7 @@ Object *ArmatureImporter::get_empty_for_leaves()
 {
 	if (empty) return empty;
 	
-	empty = bc_add_object(scene, OB_EMPTY, NULL);
+	empty = bc_add_object(scene, view_layer, OB_EMPTY, NULL);
 	empty->empty_drawtype = OB_EMPTY_SPHERE;
 
 	return empty;
@@ -586,7 +587,7 @@ Object *ArmatureImporter::create_armature_bones(SkinInfo& skin)
 		ob_arm = skin.set_armature(shared);
 	}
 	else {
-		ob_arm = skin.create_armature(scene);  //once for every armature
+		ob_arm = skin.create_armature(scene, view_layer);  //once for every armature
 	}
 
 	// enter armature edit mode
diff --git a/source/blender/collada/ArmatureImporter.h b/source/blender/collada/ArmatureImporter.h
index 17173f157e5..f260bb2307c 100644
--- a/source/blender/collada/ArmatureImporter.h
+++ b/source/blender/collada/ArmatureImporter.h
@@ -63,6 +63,7 @@ class ArmatureImporter : private TransformReader
 {
 private:
 	Scene *scene;
+	ViewLayer *view_layer;
 	UnitConverter *unit_converter;
 	const ImportSettings *import_settings;
 
@@ -137,7 +138,7 @@ private:
 	TagsMap uid_tags_map;
 public:
 
-	ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, Scene *sce, const ImportSettings *import_settings);
+	ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, Scene *sce, ViewLayer *view_layer, const ImportSettings *import_settings);
 	~ArmatureImporter();
 
 	void add_root_joint(COLLADAFW::Node *node, Object *parent);
diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp
index d3e23f740c8..dfd662aa66c 100644
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@ -108,8 +108,9 @@ DocumentImporter::DocumentImporter(bContext *C, const ImportSettings *import_set
 	import_settings(import_settings),
 	mImportStage(General),
 	mContext(C),
-	armature_importer(&unit_converter, &mesh_importer, CTX_data_scene(C), import_settings),
-	mesh_importer(&unit_converter, &armature_importer, CTX_data_scene(C)),
+	view_layer(CTX_data_view_layer(mContext)),
+	armature_importer(&unit_converter, &mesh_importer, CTX_data_scene(C), view_layer, import_settings),
+	mesh_importer(&unit_converter, &armature_importer, CTX_data_scene(C), view_layer),
 	anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C))
 {
 }
@@ -134,7 +135,7 @@ bool DocumentImporter::import()
 	loader.registerExtraDataCallbackHandler(ehandler);
 
 	// deselect all to select new objects
-	BKE_view_layer_base_deselect_all(CTX_data_view_layer(mContext));
+	BKE_view_layer_base_deselect_all(view_layer);
 
 	std::string mFilename = std::string(this->import_settings->filepath);
 	const std::string encodedFilename = bc_url_encode(mFilename);
@@ -380,7 +381,7 @@ Object *DocumentImporter::create_camera_object(COLLADAFW::InstanceCamera *camera
 		return NULL;
 	}
 
-	Object *ob = bc_add_object(sce, OB_CAMERA, NULL);
+	Object *ob = bc_add_object(sce, view_layer, OB_CAMERA, NULL);
 	Camera *cam = uid_camera_map[cam_uid];
 	Camera *old_cam = (Camera *)ob->data;
 	ob->data = cam;
@@ -396,7 +397,7 @@ Object *DocumentImporter::create_lamp_object(COLLADAFW::InstanceLight *lamp, Sce
 		return NULL;
 	}
 
-	Object *ob = bc_add_object(sce, OB_LAMP, NULL);
+	Object *ob = bc_add_object(sce, view_layer, OB_LAMP, NULL);
 	Lamp *la = uid_lamp_map[lamp_uid];
 	Lamp *old_lamp = (Lamp *)ob->data;
 	ob->data = la;
@@ -512,7 +513,7 @@ std::vector<Object *> *DocumentImporter::write_node(COLLADAFW::Node *node, COLLA
 		if (parent_node == NULL && !is_library_node) {
 			// A Joint on root level is a skeleton without root node.
 			// Here we add the armature "on the fly":
-			par = bc_add_object(sce, OB_ARMATURE, std::string("Armature").c_str());
+			par = bc_add_object(sce, view_layer, OB_ARMATURE, std::string("Armature").c_str());
 			objects_done->push_back(par);
 			root_objects->push_back(par);
 			object_map.insert(std::pair<COLLADAFW::UniqueId, Object *>(node->getUniqueId(), par));
@@ -626,10 +627,10 @@ std::vector<Object *> *DocumentImporter::write_node(COLLADAFW::Node *node, COLLA
 		if ( (geom_done + camera_done + lamp_done + controller_done + inst_done) < 1) {
 			//Check if Object is armature, by checking if immediate child is a JOINT node.
 			if (is_armature(node)) {
-				ob = bc_add_object(sce, OB_ARMATURE, name.c_str());
+				ob = bc_add_object(sce, view_layer, OB_ARMATURE, name.c_str());
 			}
 			else {
-				ob = bc_add_object(sce, OB_EMPTY, NULL);
+				ob = bc_add_object(sce, view_layer, OB_EMPTY, NULL);
 			}
 			objects_done->push_back(ob);
 			if (parent_node == NULL) {
diff --git a/source/blender/collada/DocumentImporter.h b/source/blender/collada/DocumentImporter.h
index 62f76dbc022..fd61f3a68da 100644
--- a/source/blender/collada/DocumentImporter.h
+++ b/source/blender/collada/DocumentImporter.h
@@ -144,6 +144,7 @@ private:
 	ImportStage mImportStage;
 
 	bContext *mContext;
+	ViewLayer *view_layer;
 
 	UnitConverter unit_converter;
 	ArmatureImporter armature_importer;
diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp
index 9c95d4de695..f8cd487c355 100644
--- a/source/blender/collada/MeshImporter.cpp
+++ b/source/blender/collada/MeshImporter.cpp
@@ -207,7 +207,11 @@ void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol)
 
 }
 
-MeshImporter::MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce) : unitconverter(unitconv), scene(sce), armature_importer(arm) {
+MeshImporter::MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce, ViewLayer *view_layer):
+	unitconverter(unitconv), 
+	scene(sce),
+	view_layer(view_layer),
+	armature_importer(arm) {
 }
 
 bool MeshImporter::set_poly_indices(MPoly *mpoly, MLoop *mloop, int loop_index, unsigned int *indices, int loop_count)
@@ -1141,7 +1145,7 @@ Object *MeshImporter::create_mesh_object(COLLADAFW::Node *node, COLLADAFW::Insta
 	const char *name = (id.length()) ? id.c_str() : NULL;
 	
 	// add object
-	Object *ob = bc_add_object(scene, OB_MESH, name);
+	Object *ob = bc_add_object(scene, view_layer, OB_MESH, name);
 	bc_set_mark(ob); // used later for material assignement optimization
 
 
diff --git a/source/blender/collada/MeshImporter.h b/source/blender/collada/MeshImporter.h
index e8ae934a393..f57f57e07a7 100644
--- a/source/blender/collada/MeshImporter.h
+++ b/source/blender/collada/MeshImporter.h
@@ -92,6 +92,8 @@ private:
 	UnitConverter *unitconverter;
 
 	Scene *scene;
+	ViewLayer *view_layer;
+
 	ArmatureImporter *armature_importer;
 
 	std::map<std::string, std::string> mesh_geom_map; // needed for correct shape key naming
@@ -159,7 +161,7 @@ private:
 
 public:
 
-	MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce);
+	MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce, ViewLayer *view_layer);
 
 	virtual Object *get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid);
 
diff --git a/source/blender/collada/SkinInfo.cpp b/source/blender/collada/SkinInfo.cpp
index c29f1748efc..a2cb8237d08 100644
--- a/source/blender/collada/SkinInfo.cpp
+++ b/source/blender/collada/SkinInfo.cpp
@@ -159,9 +159,9 @@ void SkinInfo::set_controller(const COLLADAFW::SkinController *co)
 }
 
 // called from write_controller
-Object *SkinInfo::create_armature(Scene *scene)
+Object *SkinInfo::create_armature(Scene *scene, ViewLayer *view_layer)
 {
-	ob_arm = bc_add_object(scene, OB_ARMATURE, NULL);
+	ob_arm = bc_add_object(scene, view_layer, OB_ARMATURE, NULL);
 	return ob_arm;
 }
 
diff --git a/source/blender/collada/SkinInfo.h b/source/blender/collada/SkinInfo.h
index e074f59cffc..a399bff9e3c 100644
--- a/source/blender/collada/SkinInfo.h
+++ b/source/blender/collada/SkinInfo.h
@@ -99,7 +99,7 @@ public:
 	void set_controller(const COLLADAFW::SkinController* co);
 
 	// called from write_controller
-	Object *create_armature(Scene *scene);
+	Object *create_armature(Scene *scene, ViewLayer *view_layer);
 
 	Object* set_armature(Object *ob_arm);
 
diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp
index 6a52027fb47..f351ebf7952 100644
--- a/source/blender/collada/collada_utils.cpp
+++ b/source/blender/collada/collada_utils.cpp
@@ -135,7 +135,7 @@ int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space)
 	return true;
 }
 
-Object *bc_add_object(Scene *scene, int type, const char *name)
+Object *bc_add_object(Scene *scene, ViewLayer *view_layer, int type, const char *name)
 {
 	Object *ob = BKE_object_add_only_object(G.main, type, name);
 
@@ -143,9 +143,6 @@ Object *bc_add_object(Scene *scene, int type, const char *name)
 	ob->lay = scene->lay;
 	DEG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
 
-	/* XXX Collada should use the context scene layer, not the scene one. (dfelinto/gaia). */
-	ViewLayer *view_layer = BKE_view_layer_context_active_PLACEHOLDER(scene);
-
 	LayerCollection *layer_collection = BKE_layer_collection_get_active_ensure(scene, view_layer);
 	BKE_collection_object_add(&scene->id, layer_collection->scene_collection, ob);
 
diff --git a/source/blender/collada/collada_utils.h b/source/blender/collada/collada_utils.h
index 75e9fb5dcea..5d6e836b9c3 100644
--- a/source/blender/collada/collada_utils.h
+++ b/source/blender/collada/collada_utils.h
@@ -67,7 +67,7 @@ typedef std::map<COLLADAFW::TextureMapId, std::vector<MTex *> > TexIndexTextureA
 extern float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray& array, unsigned in

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list