GPencil: Calculate inverse matrix only once

Instead to do it for each action, do it only in init.
This commit is contained in:
Antonio Vazquez 2019-10-22 11:23:24 +02:00
parent bfa9ead12a
commit f8e8f4ee0f

@ -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;
}