[Bf-blender-cvs] [8ac6bb57380] refactor-mesh-bevel-weight-generic: Fix python API

Hans Goudey noreply at git.blender.org
Tue Aug 2 18:47:22 CEST 2022


Commit: 8ac6bb573804b2addac67af6da137140b080e2ec
Author: Hans Goudey
Date:   Tue Aug 2 11:35:50 2022 -0500
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rB8ac6bb573804b2addac67af6da137140b080e2ec

Fix python API

===================================================================

M	source/blender/makesrna/intern/rna_mesh.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index ae42fa927dc..c2107462169 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -352,6 +352,9 @@ static void rna_Mesh_update_positions_tag(Main *bmain, Scene *scene, PointerRNA
 /** \name Property get/set Callbacks
  * \{ */
 
+static int rna_MeshVertex_index_get(PointerRNA *ptr);
+static int rna_MeshEdge_index_get(PointerRNA *ptr);
+
 static void rna_MeshVertex_normal_get(PointerRNA *ptr, float *value)
 {
   Mesh *mesh = rna_mesh(ptr);
@@ -367,33 +370,33 @@ static void rna_MeshVertex_normal_get(PointerRNA *ptr, float *value)
 static float rna_MeshVertex_bevel_weight_get(PointerRNA *ptr)
 {
   const Mesh *mesh = rna_mesh(ptr);
-  const MVert *vert = (const MVert *)ptr->data;
+  const int index = rna_MeshVertex_index_get(ptr);
   const float *values = CustomData_get_layer(&mesh->vdata, CD_BWEIGHT);
-  return values[vert - mesh->mvert];
+  return values == NULL ? 0.0f : values[index];
 }
 
 static void rna_MeshVertex_bevel_weight_set(PointerRNA *ptr, float value)
 {
-  const Mesh *mesh = rna_mesh(ptr);
-  MVert *vert = (MVert *)ptr->data;
-  float *values = CustomData_get_layer(&mesh->vdata, CD_BWEIGHT);
-  values[vert - mesh->mvert] = clamp_f(value, 0.0f, 1.0f);
+  Mesh *mesh = rna_mesh(ptr);
+  const int index = rna_MeshVertex_index_get(ptr);
+  float *values = CustomData_add_layer(&mesh->vdata, CD_BWEIGHT, CD_CALLOC, NULL, mesh->totvert);
+  values[index] = clamp_f(value, 0.0f, 1.0f);
 }
 
 static float rna_MEdge_bevel_weight_get(PointerRNA *ptr)
 {
   const Mesh *mesh = rna_mesh(ptr);
-  const MEdge *edge = (const MEdge *)ptr->data;
+  const int index = rna_MeshEdge_index_get(ptr);
   const float *values = CustomData_get_layer(&mesh->edata, CD_BWEIGHT);
-  return values[edge - mesh->medge];
+  return values == NULL ? 0.0f : values[index];
 }
 
 static void rna_MEdge_bevel_weight_set(PointerRNA *ptr, float value)
 {
   Mesh *mesh = rna_mesh(ptr);
-  const MEdge *edge = (const MEdge *)ptr->data;
-  float *values = CustomData_get_layer(&mesh->edata, CD_BWEIGHT);
-  values[edge - mesh->medge] = clamp_f(value, 0.0f, 1.0f);
+  const int index = rna_MeshEdge_index_get(ptr);
+  float *values = CustomData_add_layer(&mesh->edata, CD_BWEIGHT, CD_CALLOC, NULL, mesh->totedge);
+  values[index] = clamp_f(value, 0.0f, 1.0f);
 }
 
 static float rna_MEdge_crease_get(PointerRNA *ptr)



More information about the Bf-blender-cvs mailing list