[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