From f8e8f4ee0f8ad5384e6d4ee7c98e93852e100608 Mon Sep 17 00:00:00 2001 From: Antonio Vazquez Date: Tue, 22 Oct 2019 11:23:24 +0200 Subject: GPencil: Calculate inverse matrix only once Instead to do it for each action, do it only in init. --- source/blender/editors/gpencil/gpencil_brush.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c index 741521f3140..4948df606ee 100644 --- a/source/blender/editors/gpencil/gpencil_brush.c +++ b/source/blender/editors/gpencil/gpencil_brush.c @@ -154,6 +154,9 @@ typedef struct tGP_BrushEditData { wmTimer *timer; bool timerTick; /* is this event from a timer */ + /* Object invert matrix */ + float inv_mat[4][4]; + RNG *rng; } tGP_BrushEditData; @@ -637,9 +640,7 @@ static bool gp_brush_push_apply(tGP_BrushEditData *gso, mul_v3_v3fl(delta, gso->dvec, inf); /* apply */ - float inv_mat[4][4]; - invert_m4_m4(inv_mat, gso->object->obmat); - mul_mat3_m4_v3(inv_mat, delta); /* only rotation component */ + mul_mat3_m4_v3(gso->inv_mat, delta); /* only rotation component */ add_v3_v3(&pt->x, delta); /* compute lock axis */ @@ -1326,6 +1327,7 @@ static bool gpsculpt_brush_init(bContext *C, wmOperator *op) gso->scene = scene; gso->object = ob; if (ob) { + invert_m4_m4(gso->inv_mat, ob->obmat); gso->vrgroup = ob->actdef - 1; if (!BLI_findlink(&ob->defbase, gso->vrgroup)) { gso->vrgroup = -1; @@ -1334,6 +1336,7 @@ static bool gpsculpt_brush_init(bContext *C, wmOperator *op) gso->is_transformed = BKE_gpencil_has_transform_modifiers(ob); } else { + unit_m4(gso->inv_mat); gso->vrgroup = -1; gso->is_transformed = false; } -- cgit v1.2.3