[Bf-blender-cvs] [279c8f1] collada-2: new:Collada 2 initial setup (added new subfolder, changed CMakelists, added collada version switcher to SPACE Menu

Gaia Clary noreply at git.blender.org
Sun Oct 23 16:08:01 CEST 2016


Commit: 279c8f18d0f1f448caa7b994e80dfee1bcdae106
Author: Gaia Clary
Date:   Sun Oct 23 16:07:23 2016 +0200
Branches: collada-2
https://developer.blender.org/rB279c8f18d0f1f448caa7b994e80dfee1bcdae106

new:Collada 2 initial setup (added new subfolder, changed CMakelists, added collada version switcher to SPACE Menu

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

M	source/blender/collada/CMakeLists.txt
A	source/blender/collada/v2/collada_version_switcher.cpp
A	source/blender/collada/v2/collada_version_switcher.h
M	source/blender/editors/io/io_collada.c
M	source/blender/editors/io/io_collada.h
M	source/blender/editors/io/io_ops.c

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

diff --git a/source/blender/collada/CMakeLists.txt b/source/blender/collada/CMakeLists.txt
index 293049a..002d078 100644
--- a/source/blender/collada/CMakeLists.txt
+++ b/source/blender/collada/CMakeLists.txt
@@ -101,6 +101,9 @@ set(SRC
 	collada.h
 	collada_internal.h
 	collada_utils.h
+
+	v2/collada_version_switcher.cpp
+	v2/collada_version_switcher.h
 )
 
 if(WITH_BUILDINFO)
diff --git a/source/blender/collada/v2/collada_version_switcher.cpp b/source/blender/collada/v2/collada_version_switcher.cpp
new file mode 100644
index 0000000..ed6bf5b
--- /dev/null
+++ b/source/blender/collada/v2/collada_version_switcher.cpp
@@ -0,0 +1,55 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <string>
+
+extern "C" {
+	#include "BKE_context.h"
+	#include "WM_api.h"
+	#include "WM_types.h"
+	#include "BLI_string.h"
+
+int collada_version = 0; // Can be 0 (default, version 1) or 1 (new and experimental, version 2)
+
+static char *get_op_switchto_string()
+{
+	int to = (collada_version + 1) % 2;
+	char *result = BLI_sprintfN("Switch to Blender COLLADA Version %d", to+1);
+	return result;
+}
+
+static int wm_collada_versionswitch_exec(bContext *C, wmOperator *op)
+{
+	collada_version = (collada_version + 1) % 2;
+	op->type->name = get_op_switchto_string();
+	return OPERATOR_FINISHED;
+}
+
+void WM_OT_collada_versionswitch(wmOperatorType *ot)
+{
+	ot->name        = get_op_switchto_string();
+	ot->description = "Switch Collada version between original implementation and new implementation (for testing)";
+	ot->idname      = "WM_OT_collada_version";
+	ot->exec        = wm_collada_versionswitch_exec;
+
+}
+}
\ No newline at end of file
diff --git a/source/blender/editors/io/io_collada.h b/source/blender/collada/v2/collada_version_switcher.h
similarity index 62%
copy from source/blender/editors/io/io_collada.h
copy to source/blender/collada/v2/collada_version_switcher.h
index 4bb1475..73ca455 100644
--- a/source/blender/editors/io/io_collada.h
+++ b/source/blender/collada/v2/collada_version_switcher.h
@@ -4,7 +4,7 @@
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. 
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,25 +15,8 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
- * The Original Code is Copyright (C) 2007 Blender Foundation.
- * All rights reserved.
- *
- * 
- * Contributor(s): Blender Foundation
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
 
-/** \file blender/editors/io/io_collada.h
- *  \ingroup editor/io
- */
-
-#ifndef __IO_COLLADA_H__
-#define __IO_COLLADA_H__
-
-struct wmOperatorType;
-
-void WM_OT_collada_export(struct wmOperatorType *ot);
-void WM_OT_collada_import(struct wmOperatorType *ot);
-
-#endif
diff --git a/source/blender/editors/io/io_collada.c b/source/blender/editors/io/io_collada.c
index 8659100..24aa385 100644
--- a/source/blender/editors/io/io_collada.c
+++ b/source/blender/editors/io/io_collada.c
@@ -75,6 +75,8 @@ static int wm_collada_export_invoke(bContext *C, wmOperator *op, const wmEvent *
 	return OPERATOR_RUNNING_MODAL;
 }
 
+extern int collada_version;
+
 /* function used for WM_OT_save_mainfile too */
 static int wm_collada_export_exec(bContext *C, wmOperator *op)
 {
@@ -151,28 +153,35 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
 	/* get editmode results */
 	ED_object_editmode_load(CTX_data_edit_object(C));
 
-
-	export_count = collada_export(CTX_data_scene(C),
-		filepath,
-		apply_modifiers,
-		export_mesh_type,
-		selected,
-		include_children,
-		include_armatures,
-		include_shapekeys,
-		deform_bones_only,
-
-		active_uv_only,
-		include_uv_textures,
-		include_material_textures,
-		use_texture_copies,
-
-		triangulate,
-		use_object_instantiation,
-		use_blender_profile,
-		sort_by_name,
-		export_transformation_type,
-		open_sim);
+	if (collada_version == 1)
+	{
+		BKE_report(op->reports, RPT_ERROR, "Collada Version 2 Exporter not yet implemented");
+		return OPERATOR_CANCELLED;
+	}
+	else
+	{
+		export_count = collada_export(CTX_data_scene(C),
+			filepath,
+			apply_modifiers,
+			export_mesh_type,
+			selected,
+			include_children,
+			include_armatures,
+			include_shapekeys,
+			deform_bones_only,
+
+			active_uv_only,
+			include_uv_textures,
+			include_material_textures,
+			use_texture_copies,
+
+			triangulate,
+			use_object_instantiation,
+			use_blender_profile,
+			sort_by_name,
+			export_transformation_type,
+			open_sim);
+	}
 
 	if (export_count == 0) {
 		BKE_report(op->reports, RPT_WARNING, "No objects selected -- Created empty export file");
@@ -411,20 +420,28 @@ static int wm_collada_import_exec(bContext *C, wmOperator *op)
 	min_chain_length = RNA_int_get(op->ptr, "min_chain_length");
 
 	RNA_string_get(op->ptr, "filepath", filename);
-	if (collada_import(
-	        C, filename,
-	        import_units,
-	        find_chains,
-	        auto_connect,
-	        fix_orientation,
-	        min_chain_length))
+
+	if (collada_version == 1)
 	{
-		return OPERATOR_FINISHED;
+		BKE_report(op->reports, RPT_ERROR, "Collada Version 2 Importer not yet implemented");
 	}
-	else {
-		BKE_report(op->reports, RPT_ERROR, "Errors found during parsing COLLADA document (see console for details)");
-		return OPERATOR_CANCELLED;
+	else
+	{
+		if (collada_import(
+			C, filename,
+			import_units,
+			find_chains,
+			auto_connect,
+			fix_orientation,
+			min_chain_length))
+		{
+			return OPERATOR_FINISHED;
+		}
+		else {
+			BKE_report(op->reports, RPT_ERROR, "Errors found during parsing COLLADA document (see console for details)");
+		}
 	}
+	return OPERATOR_CANCELLED;
 }
 
 static void uiCollada_importSettings(uiLayout *layout, PointerRNA *imfptr)
diff --git a/source/blender/editors/io/io_collada.h b/source/blender/editors/io/io_collada.h
index 4bb1475..d57e23c 100644
--- a/source/blender/editors/io/io_collada.h
+++ b/source/blender/editors/io/io_collada.h
@@ -35,5 +35,6 @@ struct wmOperatorType;
 
 void WM_OT_collada_export(struct wmOperatorType *ot);
 void WM_OT_collada_import(struct wmOperatorType *ot);
+void WM_OT_collada_versionswitch(struct wmOperatorType *ot);
 
 #endif
diff --git a/source/blender/editors/io/io_ops.c b/source/blender/editors/io/io_ops.c
index d1e9335..c40355f 100644
--- a/source/blender/editors/io/io_ops.c
+++ b/source/blender/editors/io/io_ops.c
@@ -48,6 +48,9 @@ void ED_operatortypes_io(void)
 	/* Collada operators: */
 	WM_operatortype_append(WM_OT_collada_export);
 	WM_operatortype_append(WM_OT_collada_import);
+
+	/* Collada Switch to new implementation */
+	WM_operatortype_append(WM_OT_collada_versionswitch);
 #endif
 #ifdef WITH_ALEMBIC
 	WM_operatortype_append(WM_OT_alembic_import);




More information about the Bf-blender-cvs mailing list