From 8b23549d479fab753ca11f4ebde5880c8a209878 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 30 Aug 2017 17:53:32 +1000 Subject: Manipulator: run callback when calculating the final matrix --- .../manipulator_types/arrow3d_manipulator.c | 7 +------ .../manipulator_types/dial3d_manipulator.c | 4 +++- .../manipulator_types/grab3d_manipulator.c | 19 ++----------------- 3 files changed, 6 insertions(+), 24 deletions(-) (limited to 'source/blender/editors/manipulator_library') diff --git a/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c index 5c984de2e27..21ebbba46cf 100644 --- a/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c +++ b/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c @@ -184,16 +184,11 @@ static void arrow_draw_intern(ArrowManipulator3D *arrow, const bool select, cons { wmManipulator *mpr = &arrow->manipulator; float color[4]; - float matrix_basis_adjust[4][4]; float matrix_final[4][4]; manipulator_color_get(mpr, highlight, color); - manipulator_arrow_matrix_basis_get(mpr, matrix_basis_adjust); - WM_manipulator_calc_matrix_final_params( - mpr, &((struct WM_ManipulatorMatrixParams) { - .matrix_basis = matrix_basis_adjust, - }), matrix_final); + WM_manipulator_calc_matrix_final(mpr, matrix_final); gpuPushMatrix(); gpuMultMatrix(matrix_final); diff --git a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c index 257ccfa88d8..f637b098cca 100644 --- a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c +++ b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c @@ -96,7 +96,9 @@ typedef struct DialInteraction { #define DIAL_WIDTH 1.0f #define DIAL_RESOLUTION 32 - +/** + * We can't use this for the #wmManipulatorType.matrix_basis_get callback, it conflicts with depth picking. + */ static void dial_calc_matrix(const wmManipulator *mpr, float mat[4][4]) { float rot[3][3]; 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 37ad31db642..fd1f5a0cf25 100644 --- a/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c +++ b/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c @@ -175,15 +175,7 @@ static void grab3d_draw_intern( float matrix_align[4][4]; manipulator_color_get(mpr, highlight, color); - - { - float matrix_basis_adjust[4][4]; - manipulator_grab_matrix_basis_get(mpr, matrix_basis_adjust); - WM_manipulator_calc_matrix_final_params( - mpr, &((struct WM_ManipulatorMatrixParams) { - .matrix_basis = matrix_basis_adjust, - }), matrix_final); - } + WM_manipulator_calc_matrix_final(mpr, matrix_final); gpuPushMatrix(); gpuMultMatrix(matrix_final); @@ -293,14 +285,7 @@ static int manipulator_grab_invoke( } #endif - { - float matrix_basis_adjust[4][4]; - manipulator_grab_matrix_basis_get(mpr, matrix_basis_adjust); - WM_manipulator_calc_matrix_final_params( - mpr, &((struct WM_ManipulatorMatrixParams) { - .matrix_basis = matrix_basis_adjust, - }), inter->init_matrix_final); - } + WM_manipulator_calc_matrix_final(mpr, inter->init_matrix_final); mpr->interaction_data = inter; -- cgit v1.2.3