- the "pull" direction is now based on the closest projection to the rotation circle
- normal to that pull direction is removed to avoid poor drag behavior
- added a few temp cvars to experiment and fine tune the behavior
- Gizmos.DotThreshold 0.2: Dot threshold for determining whether the rotation plane is perpendicular to the camera view [0.2, 1.0]
- Gizmos.DebugDraw false: Displays debugging information.
- Gizmos.ProjectIndirect true: Project to the nearest point of the curve when handling indirect rotation.
#jira UE-200162
#rb brooke.hubert
[CL 29809369 by benoit gadreau in ue5-main branch]
- use the ViewAlignAxialMaxCosAngleTol property instead of the default one to enable per-element customization
- reduced the max partial angle of rotation handles so that they don't depth fight with the arcball handle on edges
#rb brooke.hubert
#rnx
[CL 29680588 by benoit gadreau in ue5-main branch]
[FYI] benoit.gadreau
Original CL Desc
-----------------------------------------------------------------
New TRS Gizmo: CTRL + MMB does indirect manipulation on the Y axiz (CTRL+LMB does Z instead of CTRL+RMB+LMB)
#rb brooke.hubert
#rnx
[CL 29499083 by bob tellez in ue5-main branch]
[FYI] benoit.gadreau
Original CL Desc
-----------------------------------------------------------------
New TRS Gizmo: hide gizmo if FEditorViewportClient::bShowWidget is false
#rb brooke.hubert
#rnx
[CL 29499063 by bob tellez in ue5-main branch]
- added ECoordSystem::COORD_Parent
- the mode manager's GetCustomDrawingCoordinateSystem overrides calculates the parent space transformation if required.
For the moment, there's no need to add anything at the ITF level, as everything is redirected to the VPC/Mode Manager thru the UEditorTransformProxy.
If the UTransformGizmo were to manage it locally, we'd probably have to add something similar to UCombinedTransformGizmo::bUseContextCoordinateSystem to make the TransformProxy responsible for managing the "local/parent" coordinate system.
#jira UE-197757
#rb brooke.hubert
[CL 28836838 by benoit gadreau in ue5-main branch]
- fixed axis manipulation for both direct & indirect manipulation
- indirect manipulation using CTRL+LMB/RMB is now handled by the gizmo
- added UMultiButtonClickDragBehavior to support click & drag with several buttons in one single behavior
#jira UE-152999
#rb semion.piskarev, brooke.hubert
[CL 28277038 by benoit gadreau in ue5-main branch]
- support for current FEditorModeTools::WidgetScale
- reset default indirect target when re-entering the same transform mode
- added FEditorTransformGizmoDataBinder to easily interface between transform gizmos and the mode manager
TODO
- FEditorModeTools::WidgetScale (currently acting as a uniform matrix scale as designed in 14299282) should be replaced by gizmo scale, line with and handle size settings once the design done.
#rb brooke.hubert
#rnx
[CL 27952239 by benoit gadreau in ue5-main branch]
- arcball rotation: the rotation is computed using a spherical+hyperbolic projection (see code for more explanation)
- indirect manipulation via MMB: hit parts are stored per mode then are used to drive the proper drag function
- defered drag function: in order to avoid notifications storm, the drag functions can be applied on tick instead using a pending function
- a single default TRS gizmo is now created when needed (instead of creating several thru selection changed or when the gizmo manager was ticking) and its visibility is set based on rules
TODO
- UEditorInteractiveGizmoManager is now closer to UInteractiveGizmoManager so I don't think we need ActiveEditorGizmos, CachedGizmoMap, etc. that are not used anymore. This should be cleaned in another CL
- UEditorTransformGizmo::OnGizmoTransformBegin should set the current axis (needed for some modes, including IKRig) but this is disabled for now has there are some side effects with dragging (this will be treated in another CL)
#jira UE-152973
#jira UE-161236
#rb brooke.hubert zach.rammell
[CL 27751789 by benoit gadreau in ue5-main branch]