[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40019] trunk/blender/source/blender/ collada: Introduce struct for export settings in COLLADA export code.

Nathan Letwory nathan at letworyinteractive.com
Wed Sep 7 20:23:31 CEST 2011


Revision: 40019
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40019
Author:   jesterking
Date:     2011-09-07 18:23:30 +0000 (Wed, 07 Sep 2011)
Log Message:
-----------
Introduce struct for export settings in COLLADA export code. This will make it easier to
add new options without having to change function signatures all over the place.

Modified Paths:
--------------
    trunk/blender/source/blender/collada/ArmatureExporter.cpp
    trunk/blender/source/blender/collada/ArmatureExporter.h
    trunk/blender/source/blender/collada/CMakeLists.txt
    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/EffectExporter.cpp
    trunk/blender/source/blender/collada/EffectExporter.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/ImageExporter.h
    trunk/blender/source/blender/collada/LightExporter.cpp
    trunk/blender/source/blender/collada/LightExporter.h
    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/SceneExporter.h
    trunk/blender/source/blender/collada/collada.cpp

Added Paths:
-----------
    trunk/blender/source/blender/collada/ExportSettings.cpp
    trunk/blender/source/blender/collada/ExportSettings.h

Modified: trunk/blender/source/blender/collada/ArmatureExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/ArmatureExporter.cpp	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/ArmatureExporter.cpp	2011-09-07 18:23:30 UTC (rev 40019)
@@ -49,7 +49,7 @@
 // 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::ArmatureExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryControllers(sw) {}
+ArmatureExporter::ArmatureExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings) : COLLADASW::LibraryControllers(sw), export_settings(export_settings) {}
 
 // write bone nodes
 void ArmatureExporter::add_armature_bones(Object *ob_arm, Scene *sce)
@@ -90,14 +90,14 @@
 	ins.add();
 }
 
-void ArmatureExporter::export_controllers(Scene *sce, bool export_selected)
+void ArmatureExporter::export_controllers(Scene *sce)
 {
 	scene = sce;
 
 	openLibrary();
 
 	GeometryFunctor gf;
-	gf.forEachMeshObjectInScene<ArmatureExporter>(sce, *this, export_selected);
+	gf.forEachMeshObjectInScene<ArmatureExporter>(sce, *this, this->export_settings->selected);
 
 	closeLibrary();
 }

Modified: trunk/blender/source/blender/collada/ArmatureExporter.h
===================================================================
--- trunk/blender/source/blender/collada/ArmatureExporter.h	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/ArmatureExporter.h	2011-09-07 18:23:30 UTC (rev 40019)
@@ -47,16 +47,15 @@
 #include "TransformWriter.h"
 #include "InstanceWriter.h"
 
+#include "ExportSettings.h"
+
 // 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?
 class ArmatureExporter: public COLLADASW::LibraryControllers, protected TransformWriter, protected InstanceWriter
 {
-private:
-	Scene *scene;
-
 public:
-	ArmatureExporter(COLLADASW::StreamWriter *sw);
+	ArmatureExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings);
 
 	// write bone nodes
 	void add_armature_bones(Object *ob_arm, Scene *sce);
@@ -65,13 +64,14 @@
 
 	void add_instance_controller(Object *ob);
 
-	void export_controllers(Scene *sce, bool export_selected);
+	void export_controllers(Scene *sce);
 
 	void operator()(Object *ob);
 
 private:
-
+	Scene *scene;
 	UnitConverter converter;
+	const ExportSettings *export_settings;
 
 #if 0
 	std::vector<Object*> written_armatures;
@@ -119,25 +119,4 @@
 									Object *ob_arm, ListBase *defbase);
 };
 
-/*
-struct GeometryFunctor {
-	// f should have
-	// void operator()(Object* ob)
-	template<class Functor>
-	void forEachMeshObjectInScene(Scene *sce, Functor &f)
-	{
-		
-		Base *base= (Base*) sce->base.first;
-		while(base) {
-			Object *ob = base->object;
-			
-			if (ob->type == OB_MESH && ob->data) {
-				f(ob);
-			}
-			base= base->next;
-			
-		}
-	}
-};*/
-
 #endif

Modified: trunk/blender/source/blender/collada/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/collada/CMakeLists.txt	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/CMakeLists.txt	2011-09-07 18:23:30 UTC (rev 40019)
@@ -52,6 +52,7 @@
 	DocumentImporter.cpp
 	EffectExporter.cpp
 	ErrorHandler.cpp
+	ExportSettings.cpp
 	ExtraHandler.cpp
 	ExtraTags.cpp
 	GeometryExporter.cpp
@@ -77,6 +78,7 @@
 	DocumentImporter.h
 	EffectExporter.h
 	ErrorHandler.h
+	ExportSettings.h
 	ExtraHandler.h
 	ExtraTags.h
 	GeometryExporter.h

Modified: trunk/blender/source/blender/collada/CameraExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/CameraExporter.cpp	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/CameraExporter.cpp	2011-09-07 18:23:30 UTC (rev 40019)
@@ -39,7 +39,7 @@
 
 #include "collada_internal.h"
 
-CamerasExporter::CamerasExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryCameras(sw){}
+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)
@@ -56,11 +56,11 @@
 	}
 }
 
-void CamerasExporter::exportCameras(Scene *sce, bool export_selected)
+void CamerasExporter::exportCameras(Scene *sce)
 {
 	openLibrary();
 	
-	forEachCameraObjectInScene(sce, *this, export_selected);
+	forEachCameraObjectInScene(sce, *this, this->export_settings->selected);
 	
 	closeLibrary();
 }

Modified: trunk/blender/source/blender/collada/CameraExporter.h
===================================================================
--- trunk/blender/source/blender/collada/CameraExporter.h	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/CameraExporter.h	2011-09-07 18:23:30 UTC (rev 40019)
@@ -36,12 +36,16 @@
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 
+#include "ExportSettings.h"
+
 class CamerasExporter: COLLADASW::LibraryCameras
 {
 public:
-	CamerasExporter(COLLADASW::StreamWriter *sw);
-	void exportCameras(Scene *sce, bool export_selected);
+	CamerasExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings);
+	void exportCameras(Scene *sce);
 	void operator()(Object *ob, Scene *sce);
+private:
+	const ExportSettings *export_settings;
 };
 
 #endif

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp	2011-09-07 18:23:30 UTC (rev 40019)
@@ -110,6 +110,7 @@
 
 #include "collada_internal.h"
 #include "DocumentExporter.h"
+#include "ExportSettings.h"
 
 // can probably go after refactor is complete
 #include "InstanceWriter.h"
@@ -145,11 +146,13 @@
 	return data->layers[layer_index].name;
 }
 
+DocumentExporter::DocumentExporter(const ExportSettings *export_settings) : export_settings(export_settings) {}
+
 // TODO: it would be better to instantiate animations rather than create a new one per object
 // COLLADA allows this through multiple <channel>s in <animation>.
 // For this to work, we need to know objects that use a certain action.
 
-void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename, bool selected)
+void DocumentExporter::exportCurrentScene(Scene *sce)
 {
 	PointerRNA sceneptr, unit_settings;
 	PropertyRNA *system; /* unused , *scale; */
@@ -157,7 +160,7 @@
 	clear_global_id_map();
 	
 	COLLADABU::NativeString native_filename =
-		COLLADABU::NativeString(std::string(filename));
+		COLLADABU::NativeString(std::string(this->export_settings->filepath));
 	COLLADASW::StreamWriter sw(native_filename);
 
 	// open <collada>
@@ -227,32 +230,32 @@
 	
 	// <library_cameras>
 	if(has_object_type(sce, OB_CAMERA)) {
-		CamerasExporter ce(&sw);
-		ce.exportCameras(sce, selected);
+		CamerasExporter ce(&sw, this->export_settings);
+		ce.exportCameras(sce);
 	}
 	
 	// <library_lights>
 	if(has_object_type(sce, OB_LAMP)) {
-		LightsExporter le(&sw);
-		le.exportLights(sce, selected);
+		LightsExporter le(&sw, this->export_settings);
+		le.exportLights(sce);
 	}
 
 	// <library_images>
-	ImagesExporter ie(&sw, filename);
-	ie.exportImages(sce, selected);
+	ImagesExporter ie(&sw, this->export_settings);
+	ie.exportImages(sce);
 	
 	// <library_effects>
-	EffectsExporter ee(&sw);
-	ee.exportEffects(sce, selected);
+	EffectsExporter ee(&sw, this->export_settings);
+	ee.exportEffects(sce);
 	
 	// <library_materials>
-	MaterialsExporter me(&sw);
-	me.exportMaterials(sce, selected);
+	MaterialsExporter me(&sw, this->export_settings);
+	me.exportMaterials(sce);
 
 	// <library_geometries>
 	if(has_object_type(sce, OB_MESH)) {
-		GeometryExporter ge(&sw);
-		ge.exportGeom(sce, selected);
+		GeometryExporter ge(&sw, this->export_settings);
+		ge.exportGeom(sce);
 	}
 
 	// <library_animations>
@@ -260,14 +263,14 @@
 	ae.exportAnimations(sce);
 
 	// <library_controllers>
-	ArmatureExporter arm_exporter(&sw);
+	ArmatureExporter arm_exporter(&sw, this->export_settings);
 	if(has_object_type(sce, OB_ARMATURE)) {
-		arm_exporter.export_controllers(sce, selected);
+		arm_exporter.export_controllers(sce);
 	}
 
 	// <library_visual_scenes>
-	SceneExporter se(&sw, &arm_exporter);
-	se.exportScene(sce, selected);
+	SceneExporter se(&sw, &arm_exporter, this->export_settings);
+	se.exportScene(sce);
 	
 	// <scene>
 	std::string scene_name(translate_id(id_name(sce)));

Modified: trunk/blender/source/blender/collada/DocumentExporter.h
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.h	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/DocumentExporter.h	2011-09-07 18:23:30 UTC (rev 40019)
@@ -29,13 +29,18 @@
 #ifndef __DOCUMENTEXPORTER_H__
 #define __DOCUMENTEXPORTER_H__
 
+#include "ExportSettings.h"
+
 struct Scene;
 
 class DocumentExporter
 {
  public:
-	void exportCurrentScene(Scene *sce, const char* filename, bool selected);
+	DocumentExporter(const ExportSettings *export_settings);
+	void exportCurrentScene(Scene *sce);
 	void exportScenes(const char* filename);
+private:
+	const ExportSettings *export_settings;
 };
 
 #endif

Modified: trunk/blender/source/blender/collada/EffectExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/EffectExporter.cpp	2011-09-07 15:34:04 UTC (rev 40018)
+++ trunk/blender/source/blender/collada/EffectExporter.cpp	2011-09-07 18:23:30 UTC (rev 40019)
@@ -55,7 +55,7 @@
 	return "";
 }
 
-EffectsExporter::EffectsExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryEffects(sw){}
+EffectsExporter::EffectsExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings) : COLLADASW::LibraryEffects(sw), export_settings(export_settings) {}
 
 bool EffectsExporter::hasEffects(Scene *sce)
 {
@@ -78,12 +78,12 @@
 	return false;
 }
 
-void EffectsExporter::exportEffects(Scene *sce, bool export_selected)
+void EffectsExporter::exportEffects(Scene *sce)
 {
 	if(hasEffects(sce)) {
 		openLibrary();
 		MaterialFunctor mf;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list