[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