Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-08-30 10:53:32 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-08-30 11:04:42 +0300
commit8b23549d479fab753ca11f4ebde5880c8a209878 (patch)
tree10ad16350a142e1528b962814e1538cf279fb530 /source/blender/editors/manipulator_library
parentd34dac10706506efb3d7d43553a2d0278eb0ae3d (diff)
Manipulator: run callback when calculating the final matrix
Diffstat (limited to 'source/blender/editors/manipulator_library')
-rw-r--r--source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c7
-rw-r--r--source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c4
-rw-r--r--source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c19
3 files changed, 6 insertions, 24 deletions
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;