[Bf-blender-cvs] [f79856f9fb1] master: Cleanup: minor changes to deform functions

Campbell Barton noreply at git.blender.org
Fri Jun 12 06:40:29 CEST 2020


Commit: f79856f9fb12d47d08e14a1e0edaee9e638362c0
Author: Campbell Barton
Date:   Fri Jun 12 14:29:59 2020 +1000
Branches: master
https://developer.blender.org/rBf79856f9fb12d47d08e14a1e0edaee9e638362c0

Cleanup: minor changes to deform functions

- Use 'float (*)[3]' to avoid casts.
- Remove unnecessary float[3] copy in gpencil_deform_verts.
- Use MEM_SAFE_FREE
- Use const arguments.

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

M	source/blender/blenkernel/BKE_mesh_wrapper.h
M	source/blender/blenkernel/intern/armature.c
M	source/blender/blenkernel/intern/mesh_wrapper.c
M	source/blender/blenkernel/intern/modifier.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
M	source/blender/makesdna/DNA_gpencil_modifier_types.h
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/modifiers/intern/MOD_armature.c
M	source/blender/modifiers/intern/MOD_util.c
M	source/blender/modifiers/intern/MOD_util.h

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

diff --git a/source/blender/blenkernel/BKE_mesh_wrapper.h b/source/blender/blenkernel/BKE_mesh_wrapper.h
index ec6a1e3457c..00e2dd08726 100644
--- a/source/blender/blenkernel/BKE_mesh_wrapper.h
+++ b/source/blender/blenkernel/BKE_mesh_wrapper.h
@@ -31,7 +31,7 @@ extern "C" {
 struct Mesh *BKE_mesh_wrapper_from_editmesh_with_coords(
     struct BMEditMesh *em,
     const struct CustomData_MeshMasks *cd_mask_extra,
-    float (*vertexCos)[3],
+    const float (*vert_coords)[3],
     const struct Mesh *me_settings);
 struct Mesh *BKE_mesh_wrapper_from_editmesh(struct BMEditMesh *em,
                                             const struct CustomData_MeshMasks *cd_mask_extra,
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index becb78bd6fe..1d9a2424ef8 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -1566,7 +1566,7 @@ static void armature_vert_task(void *__restrict userdata,
     dq = &sumdq;
   }
   else {
-    sumvec[0] = sumvec[1] = sumvec[2] = 0.0f;
+    zero_v3(sumvec);
     vec = sumvec;
 
     if (vert_deform_mats) {
@@ -1622,7 +1622,7 @@ static void armature_vert_task(void *__restrict userdata,
   mul_m4_v3(data->premat, co);
 
   if (use_dverts && dvert && dvert->totweight) { /* use weight groups ? */
-    MDeformWeight *dw = dvert->dw;
+    const MDeformWeight *dw = dvert->dw;
     int deformed = 0;
     unsigned int j;
     for (j = dvert->totweight; j != 0; j--, dw++) {
diff --git a/source/blender/blenkernel/intern/mesh_wrapper.c b/source/blender/blenkernel/intern/mesh_wrapper.c
index 98b77256ad7..6a8bc698b11 100644
--- a/source/blender/blenkernel/intern/mesh_wrapper.c
+++ b/source/blender/blenkernel/intern/mesh_wrapper.c
@@ -53,7 +53,7 @@
 
 Mesh *BKE_mesh_wrapper_from_editmesh_with_coords(BMEditMesh *em,
                                                  const CustomData_MeshMasks *cd_mask_extra,
-                                                 float (*vertexCos)[3],
+                                                 const float (*vert_coords)[3],
                                                  const Mesh *me_settings)
 {
   Mesh *me = BKE_id_new_nomain(ID_ME, NULL);
@@ -83,7 +83,7 @@ Mesh *BKE_mesh_wrapper_from_editmesh_with_coords(BMEditMesh *em,
 #endif
 
   EditMeshData *edit_data = me->runtime.edit_data;
-  edit_data->vertexCos = vertexCos;
+  edit_data->vertexCos = vert_coords;
   return me;
 }
 
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index d4b7d05c228..7c77746ea1c 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -878,10 +878,7 @@ void BKE_modifier_free_temporary_data(ModifierData *md)
   if (md->type == eModifierType_Armature) {
     ArmatureModifierData *amd = (ArmatureModifierData *)md;
 
-    if (amd->prevCos) {
-      MEM_freeN(amd->prevCos);
-      amd->prevCos = NULL;
-    }
+    MEM_SAFE_FREE(amd->vert_coords_prev);
   }
 }
 
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 79705385538..cc53af2b4ff 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5595,7 +5595,7 @@ static void direct_link_modifiers(BlendDataReader *reader, ListBase *lb, Object
     else if (md->type == eModifierType_Armature) {
       ArmatureModifierData *amd = (ArmatureModifierData *)md;
 
-      amd->prevCos = NULL;
+      amd->vert_coords_prev = NULL;
     }
     else if (md->type == eModifierType_Cloth) {
       ClothModifierData *clmd = (ClothModifierData *)md;
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
index 8e7fe872358..fde5ebcff8d 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
@@ -69,38 +69,34 @@ static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
 static void gpencil_deform_verts(ArmatureGpencilModifierData *mmd, Object *target, bGPDstroke *gps)
 {
   bGPDspoint *pt = gps->points;
-  float *all_vert_coords = MEM_callocN(sizeof(float) * 3 * gps->totpoints, __func__);
+  float(*vert_coords)[3] = MEM_mallocN(sizeof(float[3]) * gps->totpoints, __func__);
   int i;
 
   BKE_gpencil_dvert_ensure(gps);
 
   /* prepare array of points */
   for (i = 0; i < gps->totpoints; i++, pt++) {
-    float *pt_coords = &all_vert_coords[3 * i];
-    float co[3];
-    copy_v3_v3(co, &pt->x);
-    copy_v3_v3(pt_coords, co);
+    copy_v3_v3(vert_coords[i], &pt->x);
   }
 
   /* deform verts */
   BKE_armature_deform_coords_with_gpencil_stroke(mmd->object,
                                                  target,
-                                                 (float(*)[3])all_vert_coords,
+                                                 vert_coords,
                                                  NULL,
                                                  gps->totpoints,
                                                  mmd->deformflag,
-                                                 (float(*)[3])mmd->prevCos,
+                                                 mmd->vert_coords_prev,
                                                  mmd->vgname,
                                                  gps);
 
   /* Apply deformed coordinates */
   pt = gps->points;
   for (i = 0; i < gps->totpoints; i++, pt++) {
-    float *pt_coords = &all_vert_coords[3 * i];
-    copy_v3_v3(&pt->x, pt_coords);
+    copy_v3_v3(&pt->x, vert_coords[i]);
   }
 
-  MEM_SAFE_FREE(all_vert_coords);
+  MEM_freeN(vert_coords);
 }
 
 /* deform stroke */
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index 125423cd061..ea1c0f1fda0 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -655,12 +655,12 @@ typedef enum eSmoothGpencil_Flag {
 
 typedef struct ArmatureGpencilModifierData {
   GpencilModifierData modifier;
-  /** Deformflag replaces armature->deformflag. */
+  /** #eArmature_DeformFlag use instead of #bArmature.deformflag. */
   short deformflag, multi;
   int _pad;
   struct Object *object;
-  /** Stored input of previous modifier, for vertexgroup blending. */
-  float *prevCos;
+  /** Stored input of previous modifier, for vertex-group blending. */
+  float (*vert_coords_prev)[3];
   /** MAX_VGROUP_NAME. */
   char vgname[64];
 
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index a2b96ac2772..1413db4baea 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -693,12 +693,12 @@ enum {
 typedef struct ArmatureModifierData {
   ModifierData modifier;
 
-  /** Deformflag replaces armature->deformflag. */
+  /** #eArmature_DeformFlag use instead of #bArmature.deformflag. */
   short deformflag, multi;
   char _pad2[4];
   struct Object *object;
-  /** Stored input of previous modifier, for vertexgroup blending. */
-  float *prevCos;
+  /** Stored input of previous modifier, for vertex-group blending. */
+  float (*vert_coords_prev)[3];
   /** MAX_VGROUP_NAME. */
   char defgrp_name[64];
 } ArmatureModifierData;
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index 214c6dbe9dc..800de546a5a 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -74,7 +74,7 @@ static void copyData(const ModifierData *md, ModifierData *target, const int fla
   ArmatureModifierData *tamd = (ArmatureModifierData *)target;
 
   BKE_modifier_copydata_generic(md, target, flag);
-  tamd->prevCos = NULL;
+  tamd->vert_coords_prev = NULL;
 }
 
 static void requiredDataMask(Object *UNUSED(ob),
@@ -152,15 +152,12 @@ static void deformVerts(ModifierData *md,
                                        NULL,
                                        numVerts,
                                        amd->deformflag,
-                                       (float(*)[3])amd->prevCos,
+                                       amd->vert_coords_prev,
                                        amd->defgrp_name,
                                        mesh);
 
   /* free cache */
-  if (amd->prevCos) {
-    MEM_freeN(amd->prevCos);
-    amd->prevCos = NULL;
-  }
+  MEM_SAFE_FREE(amd->vert_coords_prev);
 }
 
 static void deformVertsEM(ModifierData *md,
@@ -186,15 +183,12 @@ static void deformVertsEM(ModifierData *md,
                                        NULL,
                                        numVerts,
                                        amd->deformflag,
-                                       (float(*)[3])amd->prevCos,
+                                       amd->vert_coords_prev,
                                        amd->defgrp_name,
                                        mesh_src);
 
   /* free cache */
-  if (amd->prevCos) {
-    MEM_freeN(amd->prevCos);
-    amd->prevCos = NULL;
-  }
+  MEM_SAFE_FREE(amd->vert_coords_prev);
 
   if (mesh_src != mesh) {
     BKE_id_free(NULL, mesh_src);
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c
index 1aee545aa43..c6dff375109 100644
--- a/source/blender/modifiers/intern/MOD_util.c
+++ b/source/blender/modifiers/intern/MOD_util.c
@@ -169,12 +169,12 @@ void MOD_get_texture_coords(MappingInfoModifierData *dmd,
   }
 }
 
-void MOD_previous_vcos_store(ModifierData *md, float (*vertexCos)[3])
+void MOD_previous_vcos_store(ModifierData *md, const float (*vert_coords)[3])
 {
   while ((md = md->next) && md->type == eModifierType_Armature) {
     ArmatureModifierData *amd = (ArmatureModifierData *)md;
-    if (amd->multi && amd->prevCos == NULL) {
-      amd->prevCos = MEM_dupallocN(vertexCos);
+    if (amd->multi && amd->vert_coords_prev == NULL) {
+      amd->vert_coords_prev = MEM_dupallocN(vert_coords);
     }
     else {
       break;
@@ -187,7 +187,7 @@ void MOD_previous_vcos_store

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list