[Bf-blender-cvs] [c87899c5101] collada: refactor: Collada: added class wrapper for ExportSettings structure

Gaia Clary noreply at git.blender.org
Wed Apr 10 22:40:20 CEST 2019


Commit: c87899c51016cbca673a65d07b4d2a9fc8e04c31
Author: Gaia Clary
Date:   Fri Apr 5 21:51:23 2019 +0200
Branches: collada
https://developer.blender.org/rBc87899c51016cbca673a65d07b4d2a9fc8e04c31

refactor: Collada: added class wrapper for ExportSettings structure

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

M	source/blender/collada/AnimationClipExporter.h
M	source/blender/collada/AnimationExporter.cpp
M	source/blender/collada/AnimationExporter.h
M	source/blender/collada/ArmatureExporter.cpp
M	source/blender/collada/ArmatureExporter.h
M	source/blender/collada/CameraExporter.cpp
M	source/blender/collada/CameraExporter.h
M	source/blender/collada/ControllerExporter.cpp
M	source/blender/collada/ControllerExporter.h
M	source/blender/collada/DocumentExporter.cpp
M	source/blender/collada/DocumentExporter.h
M	source/blender/collada/EffectExporter.cpp
M	source/blender/collada/EffectExporter.h
M	source/blender/collada/ExportSettings.h
M	source/blender/collada/GeometryExporter.cpp
M	source/blender/collada/GeometryExporter.h
M	source/blender/collada/ImageExporter.cpp
M	source/blender/collada/ImageExporter.h
M	source/blender/collada/LightExporter.cpp
M	source/blender/collada/LightExporter.h
M	source/blender/collada/MaterialExporter.cpp
M	source/blender/collada/MaterialExporter.h
M	source/blender/collada/SceneExporter.cpp
M	source/blender/collada/SceneExporter.h
M	source/blender/collada/TransformWriter.cpp
M	source/blender/collada/TransformWriter.h
M	source/blender/collada/collada_utils.cpp
M	source/blender/collada/collada_utils.h

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

diff --git a/source/blender/collada/AnimationClipExporter.h b/source/blender/collada/AnimationClipExporter.h
index fd19e8eda5a..8c2825599eb 100644
--- a/source/blender/collada/AnimationClipExporter.h
+++ b/source/blender/collada/AnimationClipExporter.h
@@ -26,12 +26,12 @@ private:
 	Depsgraph *depsgraph;
 	Scene *scene;
 	COLLADASW::StreamWriter *sw;
-	const ExportSettings *export_settings;
+	BCExportSettings &export_settings;
 	std::vector<std::vector<std::string>> anim_meta;
 
 public:
 
-	AnimationClipExporter(Depsgraph *depsgraph , COLLADASW::StreamWriter *sw, const ExportSettings *export_settings, std::vector<std::vector<std::string>> anim_meta) :
+	AnimationClipExporter(Depsgraph *depsgraph , COLLADASW::StreamWriter *sw, BCExportSettings &export_settings, std::vector<std::vector<std::string>> anim_meta) :
 		COLLADASW::LibraryAnimationClips(sw),
 		depsgraph(depsgraph),
 		scene(nullptr),
diff --git a/source/blender/collada/AnimationExporter.cpp b/source/blender/collada/AnimationExporter.cpp
index e9babea7b3d..1a52586f03a 100644
--- a/source/blender/collada/AnimationExporter.cpp
+++ b/source/blender/collada/AnimationExporter.cpp
@@ -80,7 +80,7 @@ bool AnimationExporter::exportAnimations()
 {
 	Scene *sce = blender_context.get_scene();
 
-	LinkNode &export_set = *this->export_settings->export_set;
+	LinkNode &export_set = *this->export_settings.get_export_set();
 	bool has_anim_data = bc_has_animations(sce, export_set);
 	int animation_count = 0;
 	if (has_anim_data) {
@@ -92,11 +92,11 @@ bool AnimationExporter::exportAnimations()
 
 		try {
 			animation_sampler.sample_scene(
-			        export_settings->sampling_rate,
+			        export_settings.get_sampling_rate(),
 			        /*keyframe_at_end = */ true,
-			        export_settings->open_sim,
-			        export_settings->keep_keyframes,
-			        export_settings->export_animation_type
+			        export_settings.get_open_sim(),
+			        export_settings.get_keep_keyframes(),
+			        export_settings.get_export_animation_type()
 			);
 
 			openLibrary();
@@ -141,7 +141,7 @@ void AnimationExporter::exportAnimation(Object *ob, BCAnimationSampler &sampler)
 	 * Note: For Armatures the skeletal animation has already been exported (see above)
 	 * However Armatures also can have Object animation.
 	 */
-	bool export_as_matrix = this->export_settings->export_transformation_type == BC_TRANSFORMATION_TYPE_MATRIX;
+	bool export_as_matrix = this->export_settings.get_export_transformation_type() == BC_TRANSFORMATION_TYPE_MATRIX;
 
 	if (export_as_matrix) {
 		export_matrix_animation(ob, sampler); // export all transform_curves as one single matrix animation
@@ -178,7 +178,7 @@ void AnimationExporter::exportAnimation(Object *ob, BCAnimationSampler &sampler)
 void AnimationExporter::export_curve_animation_set(Object *ob, BCAnimationSampler &sampler, bool export_as_matrix)
 {
 	BCAnimationCurveMap *curves = sampler.get_curves(ob);
-	bool keep_flat_curves = this->export_settings->keep_flat_curves;
+	bool keep_flat_curves = this->export_settings.get_keep_flat_curves();
 
 	BCAnimationCurveMap::iterator it;
 	for (it = curves->begin(); it != curves->end(); ++it) {
@@ -217,7 +217,7 @@ void AnimationExporter::export_curve_animation_set(Object *ob, BCAnimationSample
 
 void AnimationExporter::export_matrix_animation(Object *ob, BCAnimationSampler &sampler)
 {
-	bool keep_flat_curves = this->export_settings->keep_flat_curves;
+	bool keep_flat_curves = this->export_settings.get_keep_flat_curves();
 
 	std::vector<float> frames;
 	sampler.get_object_frames(frames, ob);
@@ -242,7 +242,7 @@ void AnimationExporter::export_matrix_animation(Object *ob, BCAnimationSampler &
 //write bone animations in transform matrix sources
 void AnimationExporter::export_bone_animations_recursive(Object *ob, Bone *bone, BCAnimationSampler &sampler)
 {
-	bool keep_flat_curves = this->export_settings->keep_flat_curves;
+	bool keep_flat_curves = this->export_settings.get_keep_flat_curves();
 
 	std::vector<float> frames;
 	sampler.get_bone_frames(frames, ob, bone);
@@ -399,7 +399,7 @@ void AnimationExporter::export_collada_curve_animation(
 
 	bool has_tangents = false;
 	std::string interpolation_id;
-	if (this->export_settings->keep_smooth_curves)
+	if (this->export_settings.get_keep_smooth_curves())
 		interpolation_id = collada_interpolation_source(curve, id, axis, &has_tangents);
 	else
 		interpolation_id = collada_linear_interpolation_source(frames.size(), id);
@@ -619,7 +619,7 @@ std::string AnimationExporter::collada_source_from_values(BCMatrixSampleMap &sam
 	source.prepareToAppendValues();
 
 	BCMatrixSampleMap::iterator it;
-	int precision = (this->export_settings->limit_precision) ? 6 : -1; // could be made configurable
+	int precision = (this->export_settings.get_limit_precision()) ? 6 : -1; // could be made configurable
 	for (it = samples.begin(); it != samples.end(); it++) {
 		const BCMatrix *sample = it->second;
 		double daemat[4][4];
diff --git a/source/blender/collada/AnimationExporter.h b/source/blender/collada/AnimationExporter.h
index 7af4777331d..70f3f786658 100644
--- a/source/blender/collada/AnimationExporter.h
+++ b/source/blender/collada/AnimationExporter.h
@@ -92,11 +92,11 @@ class AnimationExporter: COLLADASW::LibraryAnimations
 private:
 	BlenderContext &blender_context;
 	COLLADASW::StreamWriter *sw;
-	const ExportSettings *export_settings;
+	BCExportSettings &export_settings;
 
 public:
 
-	AnimationExporter(BlenderContext &blender_context, COLLADASW::StreamWriter *sw, const ExportSettings *export_settings):
+	AnimationExporter(BlenderContext &blender_context, COLLADASW::StreamWriter *sw, BCExportSettings &export_settings):
 		COLLADASW::LibraryAnimations(sw),
 		blender_context(blender_context),
 		sw(sw),
diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp
index de4c4794547..15cbd3d879c 100644
--- a/source/blender/collada/ArmatureExporter.cpp
+++ b/source/blender/collada/ArmatureExporter.cpp
@@ -77,7 +77,7 @@ void ArmatureExporter::add_armature_bones(
 
 void ArmatureExporter::write_bone_URLs(COLLADASW::InstanceController &ins, Object *ob_arm, Bone *bone)
 {
-	if (bc_is_root_bone(bone, this->export_settings->deform_bones_only)) {
+	if (bc_is_root_bone(bone, this->export_settings.get_deform_bones_only())) {
 		std::string joint_id = translate_id(id_name(ob_arm) + "_" + bone->name);
 		ins.addSkeleton(COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, joint_id));
 	}
@@ -107,7 +107,7 @@ bool ArmatureExporter::add_instance_controller(Object *ob)
 		write_bone_URLs(ins, ob_arm, bone);
 	}
 
-	InstanceWriter::add_material_bindings(ins.getBindMaterial(), ob, this->export_settings->active_uv_only);
+	InstanceWriter::add_material_bindings(ins.getBindMaterial(), ob, this->export_settings.get_active_uv_only());
 
 	ins.add();
 	return true;
@@ -154,7 +154,7 @@ void ArmatureExporter::add_bone_node(
     SceneExporter *se,
     std::vector<Object *>& child_objects)
 {
-	if (!(this->export_settings->deform_bones_only && bone->flag & BONE_NO_DEFORM)) {
+	if (can_export(bone)) {
 		std::string node_id = translate_id(id_name(ob_arm) + "_" + bone->name);
 		std::string node_name = std::string(bone->name);
 		std::string node_sid = get_joint_sid(bone);
@@ -166,9 +166,9 @@ void ArmatureExporter::add_bone_node(
 		node.setNodeName(node_name);
 		node.setNodeSid(node_sid);
 
-		if (this->export_settings->use_blender_profile)
+		if (this->export_settings.get_use_blender_profile())
 		{
-			if (bone->parent) {
+			if (!is_export_root(bone)) {
 				if (bone->flag & BONE_CONNECTED) {
 					node.addExtraTechniqueParameter("blender", "connect", true);
 				}
@@ -214,7 +214,7 @@ void ArmatureExporter::add_bone_node(
 					// TODO: when such objects are animated as
 					// single matrix the tweak must be applied
 					// to the result.
-					if (export_settings->open_sim) {
+					if (export_settings.get_open_sim()) {
 						// tweak objects parentinverse to match compatibility
 						float temp[4][4];
 
@@ -243,6 +243,18 @@ void ArmatureExporter::add_bone_node(
 		}
 }
 
+bool ArmatureExporter::is_export_root(Bone *bone)
+{
+	Bone *entry = bone->parent;
+	while (entry) {
+		if (can_export(entry)) {
+			return false;
+		}
+		entry = entry->parent;
+	}
+	return can_export(bone);
+}
+
 void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW::Node& node)
 {
 	//bPoseChannel *pchan = BKE_pose_channel_find_name(ob_arm->pose, bone->name);
@@ -277,7 +289,7 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW:
 		}
 
 		// OPEN_SIM_COMPATIBILITY
-		if (export_settings->open_sim) {
+		if (export_settings.get_open_sim()) {
 			// Remove rotations vs armature from transform
 			// parent_rest_rot * mat * irest_rot
 			float temp[4][4];
@@ -296,8 +308,9 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW:
 		}
 	}
 
-	if (this->export_settings->limit_precision)
+	if (this->export_settings.get_limit_precision()) {
 		bc_sanitize_mat(mat, LIMITTED_PRECISION);
+	}
 
 	TransformWriter::add_node_transform(node, mat, NULL);
 
diff --git a/source/blender/collada/ArmatureExporter.h b/source/blender/collada/ArmatureExporter.h
index 11f853621a0..2ac480b4cf2 100644
--- a/source/blender/collada/ArmatureExporter.h
+++ b/source/blender/collada/ArmatureExporter.h
@@ -54,7 +54,7 @@ public:
 	// XXX exporter writes wrong data for shared armatures.  A separate
 	// controller should be written for each armature-mesh binding how do
 	// we make controller ids then?
-	ArmatureExporter(BlenderContext &blender_context, COLLADASW::StreamWriter *sw, const ExportSettings *export_settings) :
+	ArmatureExporter(BlenderContext &blender_context, COLLADASW::StreamWriter *sw, BCExportSettings &export_settings) :
 		COLLADASW::LibraryControllers(sw),
 		blender_context(blender_context),
 		export_settings(export_settings)
@@ -70,7 +70,7 @@ public:
 
 private:
 	BlenderContext &blender_context;
-	const ExportSettings *export_settings;
+	BCExportSettings &export_settings;
 
 #if 0
 	std::vector<Object *> written_armatures;
@@ -90,6 +90,12 @@ private:
 	        SceneExporter *se,
 	        std::vector<Object *>& child_objects);
 
+	

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list