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:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-02-03 20:57:06 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-02-03 20:57:06 +0300
commit9d902d1b30f828d6861e38a3afd068ec5dcecd21 (patch)
treeff2a7ff90ad59b18f54d82d7d1bc2c80f33c40cd /source/blender/editors/transform
parentdcb2821292f962951e88f146cb304160f21f73da (diff)
parent5eb5a7f4b7d7c5228ec9596b35e7f2e317aad97d (diff)
Merge branch 'blender-v2.92-release'
# Conflicts: # source/blender/editors/transform/transform_constraints.c
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform.h2
-rw-r--r--source/blender/editors/transform/transform_constraints.c24
-rw-r--r--source/blender/editors/transform/transform_generics.c13
-rw-r--r--source/blender/editors/transform/transform_gizmo_3d.c5
4 files changed, 23 insertions, 21 deletions
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 91bf2bf8aac..fff7d47cc5b 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -722,8 +722,6 @@ bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3]);
void calculatePropRatio(TransInfo *t);
-void getViewVector(const TransInfo *t, const float coord[3], float vec[3]);
-
void transform_data_ext_rotate(TransData *td, float mat[3][3], bool use_drot);
void freeCustomNormalArray(TransInfo *t, TransDataContainer *tc, TransCustomData *custom_data);
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 09d3a991cc1..fc8e823f050 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -83,6 +83,18 @@ static void projection_matrix_calc(const TransInfo *t, float r_pmtx[3][3])
mul_m3_m3m3(r_pmtx, t->spacemtx, mat);
}
+static void view_vector_calc(const TransInfo *t, const float focus[3], float r_vec[3])
+{
+ if (t->persp != RV3D_ORTHO) {
+ sub_v3_v3v3(r_vec, t->viewinv[3], focus);
+ }
+ else {
+ copy_v3_v3(r_vec, t->viewinv[2]);
+ }
+ normalize_v3(r_vec);
+}
+
+/* ************************** CONSTRAINTS ************************* */
#define CONSTRAIN_EPSILON 0.0001f
static void constraint_plane_calc(TransInfo *t, float r_plane[4])
@@ -221,14 +233,14 @@ static void axisProjection(const TransInfo *t,
float norm_center[3];
float plane[3];
- getViewVector(t, t_con_center, norm_center);
+ view_vector_calc(t, t_con_center, norm_center);
cross_v3_v3v3(plane, norm_center, axis);
project_v3_v3v3(vec, in, plane);
sub_v3_v3v3(vec, in, vec);
add_v3_v3v3(v, vec, t_con_center);
- getViewVector(t, v, norm);
+ view_vector_calc(t, v, norm);
/* give arbitrary large value if projection is impossible */
factor = dot_v3v3(axis, norm);
@@ -345,7 +357,7 @@ static bool isPlaneProjectionViewAligned(const TransInfo *t, const float plane[4
{
const float eps = 0.001f;
float view_to_plane[3];
- getViewVector(t, t->center_global, view_to_plane);
+ view_vector_calc(t, t->center_global, view_to_plane);
float factor = dot_v3v3(plane, view_to_plane);
return fabsf(factor) < eps;
@@ -356,7 +368,7 @@ static void planeProjection(const TransInfo *t, const float in[3], float out[3])
float vec[3], factor, norm[3];
add_v3_v3v3(vec, in, t->center_global);
- getViewVector(t, vec, norm);
+ view_vector_calc(t, vec, norm);
sub_v3_v3v3(vec, out, in);
@@ -561,7 +573,9 @@ static void constraints_rotation_imp(TransInfo *t,
}
/* don't flip axis if asked to or if num input */
if (r_angle && (mode & CON_NOFLIP) == 0 && hasNumInput(&t->num) == 0) {
- if (dot_v3v3(r_vec, t->viewinv[2]) > 0.0f) {
+ float view_vector[3];
+ view_vector_calc(t, t->center_global, view_vector);
+ if (dot_v3v3(r_vec, view_vector) > 0.0f) {
*r_angle = -(*r_angle);
}
}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 5b41f6b51bf..f648369bc31 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -64,19 +64,6 @@
#include "transform_orientations.h"
#include "transform_snap.h"
-/* ************************** Functions *************************** */
-
-void getViewVector(const TransInfo *t, const float coord[3], float vec[3])
-{
- if (t->persp != RV3D_ORTHO) {
- sub_v3_v3v3(vec, coord, t->viewinv[3]);
- }
- else {
- copy_v3_v3(vec, t->viewinv[2]);
- }
- normalize_v3(vec);
-}
-
/* ************************** GENERICS **************************** */
void drawLine(TransInfo *t, const float center[3], const float dir[3], char axis, short options)
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c
index 5b9d73a10fe..0a4448f82f9 100644
--- a/source/blender/editors/transform/transform_gizmo_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_3d.c
@@ -1865,7 +1865,10 @@ static void WIDGETGROUP_gizmo_invoke_prepare(const bContext *C,
PropertyRNA *prop_orient_type = RNA_struct_find_property(ptr, "orient_type");
const TransformOrientationSlot *orient_slot = BKE_scene_orientation_slot_get_from_flag(
scene, ggd->twtype_init);
- if (orient_slot == &scene->orientation_slots[SCE_ORIENT_DEFAULT]) {
+ if ((gz == ggd->gizmos[MAN_AXIS_ROT_C]) ||
+ (orient_slot == &scene->orientation_slots[SCE_ORIENT_DEFAULT])) {
+ /* #MAN_AXIS_ROT_C always uses the #V3D_ORIENT_VIEW orientation,
+ * optionally we could set this orientation instead of unset the property. */
RNA_property_unset(ptr, prop_orient_type);
}
else {