diff options
author | Joshua Leung <aligorith@gmail.com> | 2016-08-29 04:50:53 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2016-08-29 05:51:31 +0300 |
commit | 44524f751954598038f957403d4fdc9d814ff31c (patch) | |
tree | 58803a4d6406f4876f499ec87197e6848978d74d /source/blender/editors/gpencil | |
parent | 299bb019b5e5bf48098a85f510d3daaaa99f53d5 (diff) |
Small optimisation: Only calculate the inverse_diff_mat once per stroke instead of for every point
(Later this calculation should be moved into the iteration macro instead, since
it only needs to be applied once per layer along with the diff_mat calculation)
Diffstat (limited to 'source/blender/editors/gpencil')
-rw-r--r-- | source/blender/editors/gpencil/gpencil_edit.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index d9b6c8046cd..d308d3ae5f1 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -1907,7 +1907,15 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op) if (gps->flag & GP_STROKE_SELECT) { bGPDspoint *pt; int i; + float inverse_diff_mat[4][4] = {0.0f}; + /* Compute inverse matrix for unapplying parenting once instead of doing per-point */ + /* TODO: add this bit to the iteration macro? */ + if (gpl->parent) { + invert_m4_m4(inverse_diff_mat, diff_mat); + } + + /* Adjust each point */ for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) { float xy[2]; @@ -1932,8 +1940,6 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op) /* Unapply parent corrections */ if (gpl->parent) { - float inverse_diff_mat[4][4]; - invert_m4_m4(inverse_diff_mat, diff_mat); mul_m4_v3(inverse_diff_mat, &pt->x); } } |