Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaia Clary <gaia.clary@machinimatrix.org>2012-06-17 03:35:53 +0400
committerGaia Clary <gaia.clary@machinimatrix.org>2012-06-17 03:35:53 +0400
commit0df30d1063cc185770451b3b2ebf3fcd0341c642 (patch)
tree3f2a1a8afb1762bc2cbc6504bcd05282b622779b /source/blender/collada
parentb5b830668560a7733ddd3609ba96e845aa63546b (diff)
Collada: (Exporter) add 'mesh type selection(view|render)' for Apply modifiers option
Diffstat (limited to 'source/blender/collada')
-rw-r--r--source/blender/collada/ArmatureExporter.cpp2
-rw-r--r--source/blender/collada/ExportSettings.h7
-rw-r--r--source/blender/collada/GeometryExporter.cpp2
-rw-r--r--source/blender/collada/collada.cpp6
-rw-r--r--source/blender/collada/collada.h23
-rw-r--r--source/blender/collada/collada_utils.cpp15
-rw-r--r--source/blender/collada/collada_utils.h2
7 files changed, 43 insertions, 14 deletions
diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp
index 8842a4b1ac5..9ac943f369c 100644
--- a/source/blender/collada/ArmatureExporter.cpp
+++ b/source/blender/collada/ArmatureExporter.cpp
@@ -345,7 +345,7 @@ void ArmatureExporter::export_controller(Object *ob, Object *ob_arm)
Mesh *me;
if (this->export_settings->apply_modifiers) {
- me = bc_to_mesh_apply_modifiers(scene, ob);
+ me = bc_to_mesh_apply_modifiers(scene, ob, this->export_settings->export_mesh_type);
}
else {
me = (Mesh *)ob->data;
diff --git a/source/blender/collada/ExportSettings.h b/source/blender/collada/ExportSettings.h
index d0985a27a70..1b2dfde641b 100644
--- a/source/blender/collada/ExportSettings.h
+++ b/source/blender/collada/ExportSettings.h
@@ -24,16 +24,15 @@
* \ingroup collada
*/
-extern "C" {
-#include "BLI_linklist.h"
-}
-
#ifndef __EXPORTSETTINGS_H__
#define __EXPORTSETTINGS_H__
+#include "collada.h"
+
struct ExportSettings {
public:
bool apply_modifiers;
+ BC_export_mesh_type export_mesh_type;
bool selected;
bool include_children;
bool include_armatures;
diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp
index 94b977ca01c..baa20ab07b7 100644
--- a/source/blender/collada/GeometryExporter.cpp
+++ b/source/blender/collada/GeometryExporter.cpp
@@ -78,7 +78,7 @@ void GeometryExporter::operator()(Object *ob)
bool use_instantiation = this->export_settings->use_object_instantiation;
Mesh *me;
if (this->export_settings->apply_modifiers) {
- me = bc_to_mesh_apply_modifiers(mScene, ob);
+ me = bc_to_mesh_apply_modifiers(mScene, ob, this->export_settings->export_mesh_type);
}
else {
me = (Mesh *)ob->data;
diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp
index 74f140e4813..da1ca6c30c8 100644
--- a/source/blender/collada/collada.cpp
+++ b/source/blender/collada/collada.cpp
@@ -28,9 +28,9 @@
/* COLLADABU_ASSERT, may be able to remove later */
#include "COLLADABUPlatform.h"
-#include "ExportSettings.h"
#include "DocumentExporter.h"
#include "DocumentImporter.h"
+#include "ExportSettings.h"
extern "C"
{
@@ -40,6 +40,7 @@ extern "C"
/* make dummy file */
#include "BLI_fileops.h"
#include "BLI_path_util.h"
+#include "BLI_linklist.h"
int collada_import(bContext *C, const char *filepath)
{
@@ -53,6 +54,7 @@ int collada_export(Scene *sce,
const char *filepath,
int apply_modifiers,
+ BC_export_mesh_type export_mesh_type,
int selected,
int include_children,
@@ -77,7 +79,7 @@ int collada_export(Scene *sce,
export_settings.filepath = (char *)filepath;
export_settings.apply_modifiers = apply_modifiers != 0;
-
+ export_settings.export_mesh_type = export_mesh_type;
export_settings.selected = selected != 0;
export_settings.include_children = include_children != 0;
export_settings.include_armatures = include_armatures != 0;
diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h
index e38f38b627a..4261e31c413 100644
--- a/source/blender/collada/collada.h
+++ b/source/blender/collada/collada.h
@@ -27,12 +27,28 @@
#ifndef __COLLADA_H__
#define __COLLADA_H__
-struct bContext;
-struct Scene;
-
+#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
+
+#include "BLI_linklist.h"
+#include "RNA_types.h"
+
+typedef enum BC_export_mesh_type {
+ BC_MESH_TYPE_VIEW,
+ BC_MESH_TYPE_RENDER,
+} BC_export_mesh_type;
+
+static EnumPropertyItem prop_bc_export_mesh_type[] = {
+ {BC_MESH_TYPE_VIEW, "view", 0, "View", "Apply modifier's view settings"},
+ {BC_MESH_TYPE_RENDER, "render", 0, "Render", "Apply modifier's render settings"},
+ {0, NULL, 0, NULL, NULL}
+};
+
+struct bContext;
+struct Scene;
+
/*
* both return 1 on success, 0 on error
*/
@@ -40,6 +56,7 @@ int collada_import(bContext *C, const char *filepath);
int collada_export(Scene *sce,
const char *filepath,
int apply_modifiers,
+ BC_export_mesh_type export_mesh_type,
int selected,
int include_children,
diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp
index 0d17c89ea30..cf7c9e49b63 100644
--- a/source/blender/collada/collada_utils.cpp
+++ b/source/blender/collada/collada_utils.cpp
@@ -138,11 +138,22 @@ Object *bc_add_object(Scene *scene, int type, const char *name)
return ob;
}
-Mesh *bc_to_mesh_apply_modifiers(Scene *scene, Object *ob)
+Mesh *bc_to_mesh_apply_modifiers(Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type)
{
Mesh *tmpmesh;
CustomDataMask mask = CD_MASK_MESH;
- DerivedMesh *dm = mesh_create_derived_view(scene, ob, mask);
+ DerivedMesh *dm;
+ switch (export_mesh_type) {
+ case BC_MESH_TYPE_VIEW: {
+ dm = mesh_create_derived_view(scene, ob, mask);
+ break;
+ }
+ case BC_MESH_TYPE_RENDER: {
+ dm = mesh_create_derived_render(scene, ob, mask);
+ break;
+ }
+ }
+
tmpmesh = BKE_mesh_add("ColladaMesh"); // name is not important here
DM_to_mesh(dm, tmpmesh, ob);
dm->release(dm);
diff --git a/source/blender/collada/collada_utils.h b/source/blender/collada/collada_utils.h
index 5f1ce0ce6d9..ab0b7421aa1 100644
--- a/source/blender/collada/collada_utils.h
+++ b/source/blender/collada/collada_utils.h
@@ -57,7 +57,7 @@ extern float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray& array, unsi
extern int bc_test_parent_loop(Object *par, Object *ob);
extern int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space = true);
extern Object *bc_add_object(Scene *scene, int type, const char *name);
-extern Mesh *bc_to_mesh_apply_modifiers(Scene *scene, Object *ob);
+extern Mesh *bc_to_mesh_apply_modifiers(Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type);
extern Object *bc_get_assigned_armature(Object *ob);
extern Object *bc_get_highest_selected_ancestor_or_self(LinkNode *export_set, Object *ob);