[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20779] branches/soc-2009-kazanbas/source/ blender: - added copy_mesh_data C function which, unlike copy_mesh, copies data
Chingiz Dyussenov
chingiz.ds at gmail.com
Wed Jun 10 11:56:23 CEST 2009
Revision: 20779
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20779
Author: chingachgook
Date: 2009-06-10 11:56:22 +0200 (Wed, 10 Jun 2009)
Log Message:
-----------
- added copy_mesh_data C function which, unlike copy_mesh, copies data
between two existing meshes.
- API's Mesh.copy reflects copy_mesh_data.
Modified Paths:
--------------
branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
Modified: branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c 2009-06-10 09:47:30 UTC (rev 20778)
+++ branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c 2009-06-10 09:56:22 UTC (rev 20779)
@@ -2029,17 +2029,64 @@
}
/* Python API */
+void copy_mesh_data(Mesh *dest, Mesh *src);
+
Mesh *RNA_api_add_mesh(Main *main, char *name)
{
return add_mesh(name);
}
-Mesh *RNA_api_mesh_copy(Mesh *me)
+void RNA_api_mesh_copy(Mesh *me, Mesh *from)
{
- return copy_mesh(me);
+ copy_mesh_data(me, from);
}
+void RNA_api_mesh_copy_transformed()
+{
+}
+
/*
+ * This version of copy_mesh doesn't allocate a new mesh,
+ * instead it copies data between two existing meshes.
+ */
+void copy_mesh_data(Mesh *dest, Mesh *src)
+{
+ int totvert, totedge, totface;
+ int has_layer;
+
+ CustomData_free(&dest->vdata, dest->totvert);
+ CustomData_free(&dest->edata, dest->totedge);
+ CustomData_free(&dest->fdata, dest->totface);
+
+ memset(&dest->vdata, 0, sizeof(dest->vdata));
+ memset(&dest->edata, 0, sizeof(dest->edata));
+ memset(&dest->fdata, 0, sizeof(dest->fdata));
+
+ totvert = dest->totvert = src->totvert;
+ totedge = dest->totedge = src->totedge;
+ totface = dest->totface = src->totface;
+
+ CustomData_copy(&src->vdata, &dest->vdata, CD_MASK_MESH, CD_DUPLICATE, totvert);
+ CustomData_copy(&src->edata, &dest->edata, CD_MASK_MESH, CD_DUPLICATE, totedge);
+ CustomData_copy(&src->fdata, &dest->fdata, CD_MASK_MESH, CD_DUPLICATE, totface);
+
+ CustomData_has_layer(&dest->vdata, CD_MVERT);
+
+ CustomData_add_layer(&dest->vdata, CD_MVERT, CD_ASSIGN, src->mvert, totvert);
+ CustomData_add_layer(&dest->edata, CD_MEDGE, CD_ASSIGN, src->medge, totedge);
+ CustomData_add_layer(&dest->fdata, CD_MFACE, CD_ASSIGN, src->mface, totface);
+
+ mesh_update_customdata_pointers(dest);
+}
+
+/*
+void RNA_api_mesh_apply_transform(Mesh *me)
+{
+
+}
+*/
+
+/*
void RNA_api_mesh_copy_(Mesh *me, Object *ob, int apply_transform)
{
if (ob->type != OB_MESH) {
Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h 2009-06-10 09:47:30 UTC (rev 20778)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h 2009-06-10 09:56:22 UTC (rev 20779)
@@ -190,7 +190,7 @@
void RNA_api_ui_layout(struct StructRNA *srna);
struct Mesh *RNA_api_add_mesh(struct Main *main, char *name);
-struct Mesh *RNA_api_mesh_copy(struct Mesh *me);
+void RNA_api_mesh_copy(struct Mesh *me, struct Mesh *from);
/* ID Properties */
Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c 2009-06-10 09:47:30 UTC (rev 20778)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c 2009-06-10 09:56:22 UTC (rev 20779)
@@ -1129,9 +1129,13 @@
rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
func= RNA_def_function(srna, "copy", "RNA_api_mesh_copy");
- RNA_def_function_ui_description(func, "Create a copy of this mesh.");
+ RNA_def_function_ui_description(func, "Copy mesh data.");
+ prop= RNA_def_pointer(func, "src", "Mesh", "", "A mesh to copy data from.");
+ RNA_def_property_flag(prop, PROP_REQUIRED);
+ /*
prop= RNA_def_pointer(func, "mesh", "Mesh", "", "A new mesh.");
RNA_def_function_return(func, prop);
+ */
}
void RNA_def_mesh(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list