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:
authorArystanbek Dyussenov <arystan.d@gmail.com>2009-06-28 17:29:03 +0400
committerArystanbek Dyussenov <arystan.d@gmail.com>2009-06-28 17:29:03 +0400
commit1557736756b41dfa8fff4d7c887a7d6da2b1f468 (patch)
tree32da2cded80ffac6cf1623ec7a42bbdbb19f0901 /source/blender/makesrna/intern
parent83a5a585e48ce9abb39e67372bd1ff400877d178 (diff)
OBJ exporter working (Python 3.0), but needs testing and fixing.
Current issues: - NURBS - needs API additions - "all scenes" export - cannot switch scene in bpy - normal calculation, disabled - duplis - need testing, only dupliverts tested - matrix problem - UI, 18 options currently don't fit into filesel panel, will do manual lay out once it's available - probably others... BPY: - made operator "execute" method required to avoid crash - added bpy.sys module which replicates old "sys" module API: - replaced create_*_mesh with a single create_mesh accepting type parameter - added Mesh.create_copy to create a copy of a mesh with 0 users Ran `dos2unix` on source/blender/python/SConscript
Diffstat (limited to 'source/blender/makesrna/intern')
-rw-r--r--source/blender/makesrna/intern/rna_mesh_api.c15
-rw-r--r--source/blender/makesrna/intern/rna_object_api.c60
2 files changed, 39 insertions, 36 deletions
diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c
index 984e6a5d30f..f4bc52bc517 100644
--- a/source/blender/makesrna/intern/rna_mesh_api.c
+++ b/source/blender/makesrna/intern/rna_mesh_api.c
@@ -36,6 +36,8 @@
#include "BKE_customdata.h"
#include "BKE_DerivedMesh.h"
+#include "BKE_mesh.h"
+
#include "BLI_arithb.h"
#include "DNA_mesh_types.h"
@@ -66,6 +68,14 @@ void rna_Mesh_transform(Mesh *me, float *mat)
}
}
+Mesh *rna_Mesh_create_copy(Mesh *me)
+{
+ Mesh *ret= copy_mesh(me);
+ ret->id.us--;
+
+ return ret;
+}
+
#if 0
/* extern struct EditVert *addvertlist(EditMesh *em, float *vec, struct EditVert *example); */
@@ -101,6 +111,11 @@ void RNA_api_mesh(StructRNA *srna)
parm= RNA_def_float_matrix(func, "matrix", 16, NULL, 0.0f, 0.0f, "", "Matrix.", 0.0f, 0.0f);
RNA_def_property_flag(parm, PROP_REQUIRED);
+ func= RNA_def_function(srna, "create_copy", "rna_Mesh_create_copy");
+ RNA_def_function_ui_description(func, "Create a copy of this Mesh datablock.");
+ parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh, remove it if it is only used for export.");
+ RNA_def_function_return(func, parm);
+
/*
func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom");
RNA_def_function_ui_description(func, "Add geometry data to mesh.");
diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c
index 1b6c298eba4..b09acb51084 100644
--- a/source/blender/makesrna/intern/rna_object_api.c
+++ b/source/blender/makesrna/intern/rna_object_api.c
@@ -36,6 +36,12 @@
#include "DNA_object_types.h"
+/* parameter to rna_Object_create_mesh */
+typedef enum CreateMeshType {
+ CREATE_MESH_PREVIEW = 0,
+ CREATE_MESH_RENDER = 1
+} CreateMeshType;
+
#ifdef RNA_RUNTIME
#include "BKE_customdata.h"
@@ -55,7 +61,7 @@
#include "ED_mesh.h"
/* copied from init_render_mesh (render code) */
-static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int render_mesh)
+static Mesh *rna_Object_create_mesh(Object *ob, bContext *C, ReportList *reports, int type)
{
/* CustomDataMask mask = CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL; */
CustomDataMask mask = CD_MASK_MESH; /* this seems more suitable, exporter,
@@ -71,8 +77,13 @@ static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int rende
BKE_report(reports, RPT_ERROR, "Object should be of type MESH.");
return NULL;
}
-
- dm= render_mesh ? mesh_create_derived_render(sce, ob, mask) : mesh_create_derived_view(sce, ob, mask);
+
+ if (type == CREATE_MESH_PREVIEW) {
+ dm= mesh_create_derived_view(sce, ob, mask);
+ }
+ else {
+ dm= mesh_create_derived_render(sce, ob, mask);
+ }
if(!dm) {
/* TODO: report */
@@ -87,16 +98,6 @@ static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int rende
return me;
}
-static Mesh *rna_Object_create_render_mesh(Object *ob, bContext *C, ReportList *reports)
-{
- return create_mesh(ob, C, reports, 1);
-}
-
-static Mesh *rna_Object_create_preview_mesh(Object *ob, bContext *C, ReportList *reports)
-{
- return create_mesh(ob, C, reports, 0);
-}
-
/* When no longer needed, duplilist should be freed with Object.free_duplilist */
static void rna_Object_create_duplilist(Object *ob, bContext *C, ReportList *reports)
{
@@ -162,33 +163,20 @@ void RNA_api_object(StructRNA *srna)
FunctionRNA *func;
PropertyRNA *parm;
- /* copied from rna_def_object */
- static EnumPropertyItem object_type_items[] = {
- {OB_EMPTY, "EMPTY", 0, "Empty", ""},
- {OB_MESH, "MESH", 0, "Mesh", ""},
- {OB_CURVE, "CURVE", 0, "Curve", ""},
- {OB_SURF, "SURFACE", 0, "Surface", ""},
- {OB_FONT, "TEXT", 0, "Text", ""},
- {OB_MBALL, "META", 0, "Meta", ""},
- {OB_LAMP, "LAMP", 0, "Lamp", ""},
- {OB_CAMERA, "CAMERA", 0, "Camera", ""},
- {OB_WAVE, "WAVE", 0, "Wave", ""},
- {OB_LATTICE, "LATTICE", 0, "Lattice", ""},
- {OB_ARMATURE, "ARMATURE", 0, "Armature", ""},
- {0, NULL, 0, NULL, NULL}};
-
- func= RNA_def_function(srna, "create_render_mesh", "rna_Object_create_render_mesh");
- RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied for rendering.");
- RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
- parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh created from object, remove it if it is only used for export.");
- RNA_def_function_return(func, parm);
+ static EnumPropertyItem mesh_type_items[] = {
+ {CREATE_MESH_PREVIEW, "PREVIEW", 0, "Preview", "Apply preview settings."},
+ {CREATE_MESH_RENDER, "RENDER", 0, "Render", "Apply render settings."},
+ {0, NULL, 0, NULL, NULL}
+ };
- func= RNA_def_function(srna, "create_preview_mesh", "rna_Object_create_preview_mesh");
- RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied for preview.");
+ func= RNA_def_function(srna, "create_mesh", "rna_Object_create_mesh");
+ RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied.");
RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ parm= RNA_def_enum(func, "type", mesh_type_items, 0, "", "Type of mesh settings to apply.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh created from object, remove it if it is only used for export.");
RNA_def_function_return(func, parm);
-
+
func= RNA_def_function(srna, "create_dupli_list", "rna_Object_create_duplilist");
RNA_def_function_ui_description(func, "Create a list of dupli objects for this object, needs to be freed manually with free_dupli_list.");
RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);