[Bf-blender-cvs] [add961c2097] blender2.8: Correct view orientation update in last commit
Campbell Barton
noreply at git.blender.org
Tue Sep 18 05:53:27 CEST 2018
Commit: add961c2097287bb338072aae82e1564bc8714a2
Author: Campbell Barton
Date: Tue Sep 18 14:03:50 2018 +1000
Branches: blender2.8
https://developer.blender.org/rBadd961c2097287bb338072aae82e1564bc8714a2
Correct view orientation update in last commit
===================================================================
M source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
===================================================================
diff --git a/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c b/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
index 07247ebad0e..b7aca5811be 100644
--- a/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
+++ b/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
@@ -128,19 +128,33 @@ static void gizmo_mesh_spin_init_setup(const bContext *UNUSED(C), wmGizmoGroup *
static void gizmo_mesh_spin_init_refresh(const bContext *C, wmGizmoGroup *gzgroup);
+static void gizmo_mesh_spin_init_refresh_axis_orientation(
+ wmGizmoGroup *gzgroup,
+ int axis_index, const float axis_vec[3])
+{
+ GizmoGroupData_SpinInit *ggd = gzgroup->customdata;
+ wmGizmo *gz = ggd->gizmos.xyz_view[axis_index];
+ WM_gizmo_set_matrix_rotation_from_z_axis(gz, axis_vec);
+
+ PointerRNA *ptr = WM_gizmo_operator_set(gz, 0, ggd->data.ot_spin, NULL);
+ RNA_float_set_array(ptr, "axis", axis_vec);
+}
+
+
static void gizmo_mesh_spin_init_draw_prepare(
const bContext *C, wmGizmoGroup *gzgroup)
{
GizmoGroupData_SpinInit *ggd = gzgroup->customdata;
RegionView3D *rv3d = CTX_wm_region_view3d(C);
+ float viewinv_m3[3][3];
+ copy_m3_m4(viewinv_m3, rv3d->viewinv);
+
/* Avoid slowdown on view adjustments. */
if ((rv3d->rflag & RV3D_NAVIGATING) == 0) {
Scene *scene = CTX_data_scene(C);
switch (scene->orientation_type) {
case V3D_MANIP_VIEW:
{
- float viewinv_m3[3][3];
- copy_m3_m4(viewinv_m3, rv3d->viewinv);
if (!equals_m3m3(viewinv_m3, ggd->prev.viewinv_m3)) {
/* Take care calling refresh from draw_prepare,
* this should be OK because it's only adjusting the cage orientation. */
@@ -150,6 +164,12 @@ static void gizmo_mesh_spin_init_draw_prepare(
}
}
}
+
+ /* Refresh handled above when using view orientation. */
+ if (!equals_m3m3(viewinv_m3, ggd->prev.viewinv_m3)) {
+ gizmo_mesh_spin_init_refresh_axis_orientation(gzgroup, 3, rv3d->viewinv[2]);
+ copy_m3_m4(ggd->prev.viewinv_m3, rv3d->viewinv);
+ }
}
static void gizmo_mesh_spin_init_refresh(const bContext *C, wmGizmoGroup *gzgroup)
@@ -170,22 +190,11 @@ static void gizmo_mesh_spin_init_refresh(const bContext *C, wmGizmoGroup *gzgrou
float mat[3][3];
ED_transform_calc_orientation_from_type(C, mat);
for (int i = 0; i < 3; i++) {
- wmGizmo *gz = ggd->gizmos.xyz_view[i];
- WM_gizmo_set_matrix_rotation_from_z_axis(gz, mat[i]);
+ gizmo_mesh_spin_init_refresh_axis_orientation(gzgroup, i, mat[i]);
}
{
- wmGizmo *gz = ggd->gizmos.xyz_view[3];
- WM_gizmo_set_matrix_rotation_from_z_axis(gz, rv3d->viewinv[2]);
- }
-
- for (int i = 0; i < ARRAY_SIZE(ggd->gizmos.xyz_view); i++) {
- wmGizmo *gz = ggd->gizmos.xyz_view[i];
- PointerRNA *ptr = WM_gizmo_operator_set(gz, 0, ggd->data.ot_spin, NULL);
- PropertyRNA *prop;
- if ((prop = RNA_struct_find_property(ptr, "axis"))) {
- RNA_property_float_set_array(ptr, prop, gz->matrix_basis[2]);
- }
+ gizmo_mesh_spin_init_refresh_axis_orientation(gzgroup, 3, rv3d->viewinv[2]);
}
/* Needed to test view orientation changes. */
More information about the Bf-blender-cvs
mailing list