[Bf-blender-cvs] [4220891236b] soc-2017-normal-tools: Removed mem alloc for align in point_normals
Rohan Rathi
noreply at git.blender.org
Fri Dec 29 17:32:41 CET 2017
Commit: 4220891236b4f961cf176477b3a5e8b718dac2d0
Author: Rohan Rathi
Date: Fri Dec 29 22:02:21 2017 +0530
Branches: soc-2017-normal-tools
https://developer.blender.org/rB4220891236b4f961cf176477b3a5e8b718dac2d0
Removed mem alloc for align in point_normals
===================================================================
M release/datafiles/locale
M release/scripts/addons
M release/scripts/addons_contrib
M source/blender/editors/mesh/editmesh_tools.c
M source/tools
===================================================================
diff --git a/release/datafiles/locale b/release/datafiles/locale
index 47700dfc983..59495b4b590 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 47700dfc9835ef7154bbd34b8725c8abf2f290df
+Subproject commit 59495b4b59077aa1cc68fffbdae1463af980f08e
diff --git a/release/scripts/addons b/release/scripts/addons
index 6cdbffbc229..27970761a18 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 6cdbffbc229bf263fa4b9b82a6e33b591c32934c
+Subproject commit 27970761a18926abe1b0020aa350305e3109a537
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index e88b7dfc3bd..6a4f93c9b8f 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit e88b7dfc3bd68888be2d05437cf50e93e41ef47b
+Subproject commit 6a4f93c9b8f36b19bd02087abf3d7f5983df035a
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index 697cdc14fd9..62fc959e695 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -6014,7 +6014,22 @@ static void apply_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUS
const bool point_away = RNA_boolean_get(op->ptr, "point_away");
const bool spherize = RNA_boolean_get(op->ptr, "spherize");
- float zero[3] = { 0.0f };
+ const bool align = RNA_boolean_get(op->ptr, "align");
+ float zero[3] = { 0.0f }, center[3];
+
+ if (align) {
+ BMVert *v;
+ BMIter viter;
+ int i = 0;
+ zero_v3(center);
+ BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
+ if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
+ add_v3_v3(center, v->co);
+ i++;
+ }
+ }
+ mul_v3_fl(center, 1.0f / (float)i);
+ }
for (int i = 0; i < ld->totloop; i++, tld++) {
if (spherize) {
@@ -6027,6 +6042,10 @@ static void apply_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUS
mul_v3_fl(tld->nloc, 1.0f - strength);
sub_v3_v3(tld->nloc, spherized_normal);
}
+ else if (align) {
+ sub_v3_v3v3(tld->nloc, target, center);
+ sub_v3_v3(tld->nloc, obedit->loc);
+ }
else {
sub_v3_v3v3(tld->nloc, target, tld->loc);
sub_v3_v3(tld->nloc, obedit->loc);
@@ -6042,17 +6061,11 @@ static void apply_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUS
}
}
-static void point_normals_free(bContext *C, wmOperator *op, const bool align)
+static void point_normals_free(bContext *C, wmOperator *op)
{
LoopNormalData *ld = op->customdata;
-
- if (align) {
- /* FIXME WHAAAAAAAATTTTTTTT? When do you ever allocate that? --mont29 */
- MEM_freeN(ld->normal->loc);
- }
BM_loop_normal_free(ld);
op->customdata = NULL;
-
ED_area_headerprint(CTX_wm_area(C), NULL);
}
@@ -6083,14 +6096,12 @@ static int point_normals_mouse(bContext *C, wmOperator *op, const wmEvent *event
ED_view3d_win_to_3d_int(v3d, ar, center, event->mval, target);
- const bool align = RNA_boolean_get(op->ptr, "align");
-
apply_point_normals(C, op, event, target);
EDBM_update_generic(em, true, false);
if (event->type == LEFTMOUSE) {
RNA_float_set_array(op->ptr, "target_location", target);
- point_normals_free(C, op, align);
+ point_normals_free(C, op);
return OPERATOR_FINISHED;
}
else if ((ISKEYBOARD(event->type) || event->type == RIGHTMOUSE) && event->type != MKEY) {
@@ -6100,7 +6111,7 @@ static int point_normals_mouse(bContext *C, wmOperator *op, const wmEvent *event
for (i = 0; i < ld->totloop; i++, tld++) { /* Reset custom normal data. */
BKE_lnor_space_custom_normal_to_data(bm->lnor_spacearr->lspacearr[tld->loop_index], tld->niloc, tld->clnors_data);
}
- point_normals_free(C, op, align);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
return OPERATOR_PASS_THROUGH;
@@ -6140,10 +6151,10 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
view3d_operator_needs_opengl(C);
bool retval = EDBM_select_pick(C, event->mval, false, false, false);
if (!retval) {
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
- ED_object_editmode_calc_active_center(obedit, false, target);
+ ED_object_editmode_calc_active_center(obedit, false, target); /* Point to newly selected active */
add_v3_v3(target, obedit->loc);
RNA_property_float_set_array(op->ptr, prop, target);
handled = true;
@@ -6195,7 +6206,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
case V3D_AROUND_ACTIVE:
if (!ED_object_editmode_calc_active_center(obedit, false, target)) {
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
add_v3_v3(target, obedit->loc);
@@ -6203,36 +6214,14 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
break;
default:
- BKE_report(op->reports, RPT_ERROR, "Does not support Indivisual Origin as pivot");
- point_normals_free(C, op, false);
+ BKE_report(op->reports, RPT_ERROR, "Does not support Individual Origin as pivot");
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
handled = true;
}
else if (event->type == MKEY) {
ld->funcdata = point_normals_mouse;
-
- const bool align = RNA_boolean_get(op->ptr, "align");
-
- if (align) { /* Set TransData loc to center loc if align true. */
- float *center = MEM_mallocN(sizeof(*center) * 3, __func__);
- TransDataLoopNormal *t = ld->normal;
- int i = 0;
-
- zero_v3(center);
- BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
- if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
- add_v3_v3(center, v->co);
- i++;
- }
- }
- mul_v3_fl(center, 1.0f / (float)i);
-
- for (i = 0; i < ld->totloop; i++, t++) {
- t->loc = center;
- }
- }
-
char header[UI_MAX_DRAW_STR];
BLI_snprintf(header, sizeof(header), IFACE_("Left Click to Confirm, Right click to Cancel"));
@@ -6244,10 +6233,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
handled = true;
}
else if (ISKEYBOARD(event->type) && event->type != RIGHTALTKEY) {
- prop = RNA_struct_find_property(op->ptr, "align");
- RNA_property_boolean_set(op->ptr, prop, false);
-
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
}
@@ -6259,9 +6245,8 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
if (handled) {
apply_point_normals(C, op, event, target);
-
EDBM_update_generic(em, true, false); /* Recheck bools. */
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_FINISHED;
}
@@ -6272,7 +6257,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
static int edbm_point_normals_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
if (!init_point_normals(C, op, event)) {
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
@@ -6298,7 +6283,7 @@ static int edbm_point_normals_exec(bContext *C, wmOperator *op)
PropertyRNA *prop;
if (!init_point_normals(C, op, NULL)) {
- point_normals_free(C, op, false);
+ point_normals_free(C, op);
return OPERATOR_CANCELLED;
}
float target[3];
@@ -6306,36 +6291,13 @@ static int edbm_point_normals_exec(bContext *C, wmOperator *op)
#if 0 /* UNUSED */
const bool point_away = RNA_boolean_get(op->ptr, "point_away");
#endif
- const bool align = RNA_boolean_get(op->ptr, "align");
-
- if (align) { /* Set TransData loc to center loc if align true. */
- float *center = MEM_mallocN(sizeof(*center) * 3, __func__);
- LoopNormalData *ld = op->customdata;
- TransDataLoopNormal *t = ld->normal;
- int i = 0;
- BMVert *v;
- BMIter viter;
-
- zero_v3(center);
- BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
- if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
- add_v3_v3(center, v->co);
- i++;
- }
- }
- mul_v3_fl(center, 1.0f / (float)i);
-
- for (i = 0; i < ld->totloop; i++, t++) {
- t->loc = center;
- }
- }
prop = RNA_struct_find_property(op->ptr, "target_location");
RNA_property_float_get_array(op->ptr, prop, target);
apply_point_normals(C, op, NULL, target);
EDBM_update_generic(em, true, false);
- point_normals_free(C, op, align);
+ point_normals_free(C, op);
return OPERATOR_FINISHED;
}
diff --git a/source/tools b/source/tools
index ccf20e08702..88a1758d2d2 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit ccf20e08702ee6424edbda01544bb9f8bc386de4
+Subproject commit 88a1758d2d2e862cc69c08b5b40a4e75f71592d3
More information about the Bf-blender-cvs
mailing list