[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47803] trunk/blender/source/blender: patch #31794 Collada: make exporter more robust, now uses BKE_object_relational_superset()

Gaia Clary gaia.clary at machinimatrix.org
Tue Jun 12 23:25:31 CEST 2012


Revision: 47803
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47803
Author:   gaiaclary
Date:     2012-06-12 21:25:29 +0000 (Tue, 12 Jun 2012)
Log Message:
-----------
patch #31794 Collada: make exporter more robust, now uses BKE_object_relational_superset()

Modified Paths:
--------------
    trunk/blender/source/blender/collada/AnimationExporter.cpp
    trunk/blender/source/blender/collada/AnimationImporter.h
    trunk/blender/source/blender/collada/ArmatureExporter.cpp
    trunk/blender/source/blender/collada/CameraExporter.cpp
    trunk/blender/source/blender/collada/CameraExporter.h
    trunk/blender/source/blender/collada/DocumentExporter.cpp
    trunk/blender/source/blender/collada/DocumentExporter.h
    trunk/blender/source/blender/collada/DocumentImporter.cpp
    trunk/blender/source/blender/collada/EffectExporter.cpp
    trunk/blender/source/blender/collada/ExportSettings.h
    trunk/blender/source/blender/collada/GeometryExporter.cpp
    trunk/blender/source/blender/collada/GeometryExporter.h
    trunk/blender/source/blender/collada/ImageExporter.cpp
    trunk/blender/source/blender/collada/LightExporter.cpp
    trunk/blender/source/blender/collada/MaterialExporter.cpp
    trunk/blender/source/blender/collada/MaterialExporter.h
    trunk/blender/source/blender/collada/SceneExporter.cpp
    trunk/blender/source/blender/collada/collada.cpp
    trunk/blender/source/blender/collada/collada.h
    trunk/blender/source/blender/collada/collada_internal.cpp
    trunk/blender/source/blender/collada/collada_internal.h
    trunk/blender/source/blender/collada/collada_utils.cpp
    trunk/blender/source/blender/collada/collada_utils.h
    trunk/blender/source/blender/makesrna/intern/rna_scene_api.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/collada/AnimationExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/AnimationExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/AnimationExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -25,16 +25,12 @@
 #include "MaterialExporter.h"
 
 template<class Functor>
-void forEachObjectInScene(Scene *sce, Functor &f)
+void forEachObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set)
 {
-	Base *base= (Base*) sce->base.first;
-
-	while (base) {
-		Object *ob = base->object;
-
+	LinkNode *node;
+	for(node=export_set; node; node=node->next) {
+		Object *ob = (Object *)node->link;
 		f(ob);
-
-		base= base->next;
 	}
 }
 
@@ -45,7 +41,7 @@
 
 		openLibrary();
 
-		forEachObjectInScene(sce, *this);
+		forEachObjectInExportSet(sce, *this, this->export_settings->export_set);
 
 		closeLibrary();
 	}

Modified: trunk/blender/source/blender/collada/AnimationImporter.h
===================================================================
--- trunk/blender/source/blender/collada/AnimationImporter.h	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/AnimationImporter.h	2012-06-12 21:25:29 UTC (rev 47803)
@@ -41,11 +41,13 @@
 #include "COLLADAFWEffect.h"
 #include "COLLADAFWInstanceGeometry.h"
 
+extern "C" {
 #include "DNA_anim_types.h"
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_lamp_types.h"
 #include "DNA_camera_types.h"
+}
 
 //#include "ArmatureImporter.h"
 #include "TransformReader.h"

Modified: trunk/blender/source/blender/collada/ArmatureExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/ArmatureExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/ArmatureExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -112,7 +112,7 @@
 	openLibrary();
 
 	GeometryFunctor gf;
-	gf.forEachMeshObjectInScene<ArmatureExporter>(sce, *this, this->export_settings->selected);
+	gf.forEachMeshObjectInExportSet<ArmatureExporter>(sce, *this, this->export_settings->export_set);
 
 	closeLibrary();
 }

Modified: trunk/blender/source/blender/collada/CameraExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/CameraExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/CameraExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -29,10 +29,10 @@
 #include <string>
 
 #include "COLLADASWCamera.h"
-#include "COLLADASWCameraOptic.h"
 
+extern "C" {
 #include "DNA_camera_types.h"
-
+}
 #include "CameraExporter.h"
 
 #include "collada_internal.h"
@@ -40,16 +40,15 @@
 CamerasExporter::CamerasExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings): COLLADASW::LibraryCameras(sw), export_settings(export_settings) {}
 
 template<class Functor>
-void forEachCameraObjectInScene(Scene *sce, Functor &f, bool export_selected)
+void forEachCameraObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set)
 {
-	Base *base = (Base*) sce->base.first;
-	while (base) {
-		Object *ob = base->object;
+	LinkNode *node;
+	for(node=export_set; node; node = node->next) {
+		Object *ob = (Object *)node->link;
 
-		if (ob->type == OB_CAMERA && ob->data && !(export_selected && !(ob->flag & SELECT))) {
+		if (ob->type == OB_CAMERA && ob->data) {
 			f(ob, sce);
 		}
-		base = base->next;
 	}
 }
 
@@ -57,7 +56,7 @@
 {
 	openLibrary();
 	
-	forEachCameraObjectInScene(sce, *this, this->export_settings->selected);
+	forEachCameraObjectInExportSet(sce, *this, this->export_settings->export_set);
 	
 	closeLibrary();
 }

Modified: trunk/blender/source/blender/collada/CameraExporter.h
===================================================================
--- trunk/blender/source/blender/collada/CameraExporter.h	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/CameraExporter.h	2012-06-12 21:25:29 UTC (rev 47803)
@@ -31,8 +31,10 @@
 #include "COLLADASWStreamWriter.h"
 #include "COLLADASWLibraryCameras.h"
 
+extern "C" {
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
+}
 
 #include "ExportSettings.h"
 

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -111,8 +111,9 @@
 
 #include "collada_internal.h"
 #include "DocumentExporter.h"
-#include "ExportSettings.h"
 
+extern bool bc_has_object_type(LinkNode *export_set, short obtype);
+
 // can probably go after refactor is complete
 #include "InstanceWriter.h"
 #include "TransformWriter.h"
@@ -227,14 +228,15 @@
 	asset.getContributor().mAuthoringTool = version_buf;
 	asset.add();
 	
+	LinkNode *export_set = this->export_settings->export_set;
 	// <library_cameras>
-	if (has_object_type(sce, OB_CAMERA)) {
+	if (bc_has_object_type(export_set, OB_CAMERA)) {
 		CamerasExporter ce(&sw, this->export_settings);
 		ce.exportCameras(sce);
 	}
 	
 	// <library_lights>
-	if (has_object_type(sce, OB_LAMP)) {
+	if (bc_has_object_type(export_set, OB_LAMP)) {
 		LightsExporter le(&sw, this->export_settings);
 		le.exportLights(sce);
 	}
@@ -252,7 +254,7 @@
 	me.exportMaterials(sce);
 
 	// <library_geometries>
-	if (has_object_type(sce, OB_MESH)) {
+	if (bc_has_object_type(export_set, OB_MESH)) {
 		GeometryExporter ge(&sw, this->export_settings);
 		ge.exportGeom(sce);
 	}
@@ -263,10 +265,8 @@
 
 	// <library_controllers>
 	ArmatureExporter arm_exporter(&sw, this->export_settings);
-	if (this->export_settings->include_armatures) {
-		if (has_object_type(sce, OB_ARMATURE)) {
-			arm_exporter.export_controllers(sce);
-		}
+	if (bc_has_object_type(export_set, OB_ARMATURE)) {
+		arm_exporter.export_controllers(sce);
 	}
 
 	// <library_visual_scenes>

Modified: trunk/blender/source/blender/collada/DocumentExporter.h
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.h	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/DocumentExporter.h	2012-06-12 21:25:29 UTC (rev 47803)
@@ -29,6 +29,10 @@
 
 #include "ExportSettings.h"
 
+extern "C" {
+#include "DNA_customdata_types.h"
+}
+
 struct Scene;
 
 class DocumentExporter

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -49,6 +49,7 @@
 #include "COLLADASaxFWLLoader.h"
 #include "COLLADASaxFWLIExtraDataCallbackHandler.h"
 
+extern "C" {
 #include "BLI_listbase.h"
 #include "BLI_math.h"
 #include "BLI_string.h"
@@ -75,6 +76,8 @@
 
 #include "MEM_guardedalloc.h"
 
+}
+
 #include "ExtraHandler.h"
 #include "ErrorHandler.h"
 #include "DocumentImporter.h"

Modified: trunk/blender/source/blender/collada/EffectExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/EffectExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/EffectExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -31,6 +31,7 @@
 #include "COLLADASWEffectProfile.h"
 
 #include "EffectExporter.h"
+#include "DocumentExporter.h"
 #include "MaterialExporter.h"
 
 #include "DNA_mesh_types.h"
@@ -82,7 +83,7 @@
 		this->scene = sce;
 		openLibrary();
 		MaterialFunctor mf;
-		mf.forEachMaterialInScene<EffectsExporter>(sce, *this, this->export_settings->selected);
+		mf.forEachMaterialInExportSet<EffectsExporter>(sce, *this, this->export_settings->export_set);
 
 		closeLibrary();
 	}

Modified: trunk/blender/source/blender/collada/ExportSettings.h
===================================================================
--- trunk/blender/source/blender/collada/ExportSettings.h	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/ExportSettings.h	2012-06-12 21:25:29 UTC (rev 47803)
@@ -24,6 +24,10 @@
  *  \ingroup collada
  */
 
+extern "C" {
+#include "BLI_linklist.h"
+}
+
 #ifndef __EXPORTSETTINGS_H__
 #define __EXPORTSETTINGS_H__
 
@@ -33,10 +37,11 @@
  bool selected;
  bool apply_modifiers;
  bool include_armatures;
- bool include_bone_children;
+ bool include_children;
  bool use_object_instantiation;
  bool second_life;
  char *filepath;
+ LinkNode *export_set;
 };
 
 #endif

Modified: trunk/blender/source/blender/collada/GeometryExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.cpp	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/GeometryExporter.cpp	2012-06-12 21:25:29 UTC (rev 47803)
@@ -61,7 +61,7 @@
 
 	mScene = sce;
 	GeometryFunctor gf;
-	gf.forEachMeshObjectInScene<GeometryExporter>(sce, *this, this->export_settings->selected);
+	gf.forEachMeshObjectInExportSet<GeometryExporter>(sce, *this, this->export_settings->export_set);
 
 	closeLibrary();
 }

Modified: trunk/blender/source/blender/collada/GeometryExporter.h
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.h	2012-06-12 21:25:23 UTC (rev 47802)
+++ trunk/blender/source/blender/collada/GeometryExporter.h	2012-06-12 21:25:29 UTC (rev 47803)
@@ -42,6 +42,8 @@
 
 #include "ExportSettings.h"
 
+extern Object *bc_get_highest_selected_ancestor_or_self(Object *ob);
+
 // TODO: optimize UV sets by making indexed list with duplicates removed
 class GeometryExporter : COLLADASW::LibraryGeometries
 {
@@ -112,21 +114,15 @@
 	// f should have
 	// void operator()(Object* ob)
 	template<class Functor>
-	void forEachMeshObjectInScene(Scene *sce, Functor &f, bool export_selected)
+	void forEachMeshObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set)
 	{
-		
-		Base *base= (Base*) sce->base.first;
-		while (base) {
-			Object *ob = base->object;
-			
-			if (ob->type == OB_MESH && ob->data &&
-			    !(export_selected && !(ob->flag & SELECT)) &&
-			    ((sce->lay & ob->lay)!=0))
+		LinkNode *node;
+		for (node=export_set; node; node = node->next) {
+			Object *ob = (Object *)node->link;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list