diff options
Diffstat (limited to 'source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c')
-rw-r--r-- | source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c index 605c089f818..7b17a67c9f3 100644 --- a/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c +++ b/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c @@ -152,22 +152,14 @@ static void grab3d_draw_intern( const bool select, const bool highlight) { float col[4]; - float final_matrix[4][4]; + float matrix_final[4][4]; manipulator_color_get(mpr, highlight, col); - copy_m4_m4(final_matrix, mpr->matrix_basis); - if (mpr->flag & WM_MANIPULATOR_DRAW_OFFSET_SCALE) { - mul_mat3_m4_fl(final_matrix, mpr->scale_final); - } - mul_m4_m4m4(final_matrix, final_matrix, mpr->matrix_offset); - if ((mpr->flag & WM_MANIPULATOR_DRAW_OFFSET_SCALE) == 0) { - mul_mat3_m4_fl(final_matrix, mpr->scale_final); - } + WM_manipulator_calc_matrix_final(mpr, matrix_final); gpuPushMatrix(); - gpuMultMatrix(mpr->matrix_space); - gpuMultMatrix(final_matrix); + gpuMultMatrix(matrix_final); glEnable(GL_BLEND); grab_geom_draw(mpr, col, select); @@ -177,18 +169,14 @@ static void grab3d_draw_intern( if (mpr->interaction_data) { GrabInteraction *inter = mpr->interaction_data; - copy_m4_m4(final_matrix, inter->init_matrix_basis); - if (mpr->flag & WM_MANIPULATOR_DRAW_OFFSET_SCALE) { - mul_mat3_m4_fl(final_matrix, inter->init_scale_final); - } - mul_m4_m4m4(final_matrix, final_matrix, mpr->matrix_offset); - if ((mpr->flag & WM_MANIPULATOR_DRAW_OFFSET_SCALE) == 0) { - mul_mat3_m4_fl(final_matrix, inter->init_scale_final); - } + WM_manipulator_calc_matrix_final_params( + mpr, &((struct WM_ManipulatorMatrixParams) { + .matrix_basis = inter->init_matrix_basis, + .scale_final = &inter->init_scale_final, + }), matrix_final); gpuPushMatrix(); - gpuMultMatrix(mpr->matrix_space); - gpuMultMatrix(final_matrix); + gpuMultMatrix(matrix_final); glEnable(GL_BLEND); grab_geom_draw(mpr, (const float [4]){0.5f, 0.5f, 0.5f, 0.5f}, select); glDisable(GL_BLEND); |