Commit Graph

103 Commits

Author SHA1 Message Date
steve robb
f029468598 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30729174 by steve robb in ue5-main branch]
2024-01-19 16:41:35 -05:00
semion piskarev
1501b2e7dd InteractiveToolsFramework: Fix context object store FindContextByClass not being able to look up context objects based on UInterfaces.
#rb lonnie.li
#jira UE-196706

[CL 30600757 by semion piskarev in ue5-main branch]
2024-01-12 14:43:54 -05:00
marc audy
763a611985 Fix C4072 warnings
#rnx

[CL 29852844 by marc audy in ue5-main branch]
2023-11-20 17:26:53 -05:00
benoit gadreau
a9607bbff7 New TRS Gizmo: partial view dependent rendering improvements
- 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]
2023-11-13 06:09:58 -05:00
benoit gadreau
9fd417fa97 New TRS Gizmo: fixed UGizmoElementBase::GetViewDependentVisibility that was using the local axis for angle computation
- this had the effect of not hidding the axis and plane handles in the correct scenarios

#rb brooke.hubert

#rnx

[CL 29566351 by benoit gadreau in ue5-main branch]
2023-11-08 13:01:40 -05:00
jimmy andrews
477d623650 fix issue where pressing modifier keys during a mouse drag could cause the drag to report spurious mouse input at 0,0 for a few ITF behaviors
#rb semion.piskarev

[CL 29320107 by jimmy andrews in ue5-main branch]
2023-11-01 12:06:39 -04:00
jimmy andrews
7e1b8e46d9 add concept of saving-on-clear/restoring the selection manager's selection, so that tools can restore the before-tool selection if the tool is cancelled, or if the tool otherwise did not change the underlying meshes.
+ add a callback to the modeling editor mode so it can know whether a tool was cancelled, and make the modeling mode use the selection manager's new save-on-clear/restore feature automatically when its tools are cancelled.

 + make some tools (normals, tangents, inspector) restore the before-tool-start selection after tool use via a utility function, since they shouldn't change mesh IDs that the selection relies on.

#jira UE-195948
#rb Ryan.Schmidt

[CL 29027037 by jimmy andrews in ue5-main branch]
2023-10-23 22:46:23 -04:00
semion piskarev
c28ca17955 InteractiveToolsFramework: Fix hover behaviors terminating when a modifier key is pressed.
#rb Brooke.Hubert

[CL 28779390 by semion piskarev in ue5-main branch]
2023-10-13 19:25:57 -04:00
jimmy andrews
355aea3bd1 fix cancel drag being turned into accept on the MeshSurfacePointTool-derived classes
#rb semion.piskarev

[CL 28540282 by jimmy andrews in ue5-main branch]
2023-10-06 10:48:24 -04:00
jimmy andrews
78fbcb1c6b Use deprecated typedef to fix FSelectedOjectsChangeList typo in ITF's ToolContextInterfaces
#jira UE-192620
#rb matija.kecman
#rb lonnie.li

[CL 27782397 by jimmy andrews in ue5-main branch]
2023-09-12 00:11:43 -04:00
benoit gadreau
7c004866a5 New TRS Gizmo updates
- 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]
2023-09-11 09:54:48 -04:00
helge mathee
c0786a81dd ITF: Sphere, LineStrip and TriangleList elements
#rb ryan.schmidt

[CL 27703880 by helge mathee in ue5-main branch]
2023-09-08 01:21:11 -04:00
kiaran ritchie
17585f4a38 Minor changes to BaseBrushTool, added ability to disable brush adjustment input, and removed platform specific header.
#rb ryan.schmidt
#JIRA https://jira.it.epicgames.com/browse/UE-183079
#preflight https://horde.devtools.epicgames.com/job/646d2ccd64351d76f349e26a

[CL 25590791 by kiaran ritchie in ue5-main branch]
2023-05-23 17:23:06 -04:00
kiaran ritchie
8b1da6298e Adding ability to adjust brush size and strength while click-dragging with B hotkey pressed.
#rb halfdan.ingvarsson
#JIRA https://jira.it.epicgames.com/browse/UE-183079
#preflight
#preflight 646d10141134ffac703ed612

[CL 25588550 by kiaran ritchie in ue5-main branch]
2023-05-23 15:22:34 -04:00
kiaran ritchie
6e44e257d7 Removed code that should not have made it into last change (25500261) due to shelving incident.
#rb trivial
#JIRA none
#preflight

[CL 25500552 by kiaran ritchie in ue5-main branch]
2023-05-16 19:49:12 -04:00
kiaran ritchie
e6d62a49db Added ability to disable base brush tool. Added toggle to skin paint tool while in selection mode.
#rb halfdan.ingvarsson
#JIRA none
#preflight https://horde.devtools.epicgames.com/job/64640cb84404e3cdd2833e1e

[CL 25500261 by kiaran ritchie in ue5-main branch]
2023-05-16 19:33:41 -04:00
semion piskarev
582964265a MeshModelingTools: Harden tool targets against underlying objects being replaced via blueprints and/or garbage collected.
#rb Lonnie.Li, Jimmy.Andrews
#jira UE-184401
#preflight 64525c58743c256cd692d59e

[CL 25334286 by semion piskarev in ue5-main branch]
2023-05-04 09:51:24 -04:00
ryan schmidt
96d47b526d InteractiveToolsFramework: add UInteractiveToolManager::bInToolShutdown flag, set during DeactivateToolInternal and use in DeactivateTool() to prevent tool shutdown from being called while tool is actively shutting down. This can occur if higher-level Mode calls shutdown on (eg) editor delegates, which might be fired by a shutdown that is actively ocurring.
#rb jimmy.andrews
#preflight 64430297b14f1faacf30fcaf

[CL 25175466 by ryan schmidt in ue5-main branch]
2023-04-24 23:20:54 -04:00
benoit gadreau
c58b1167bf Skeleton Mesh Editing tool: multi selection + transform gizmo
- multiselection: bones can be multi-selected (using shift/ctrl) so that they can be bulk edited
    - bones can be transformed individually (unlike in the level editor where the last selected element's transform is used as pivot)
    - added USkeletalMeshGizmoContextObject to manage gizmo wrappers for skeletal mesh tools
    - gizmo: re-used the transform gizmo work done with several fixes/improvements so that they can be used in other contexts
        - UTransformGizmo can be used without TransformGizmoSource, most of the infos can be retrieved from the IToolsContextQueriesAPI
        - UTransformGizmo can be passed an external StateTarget to handle transaction externally
        - UTransformGizmo fixed rotations going in the wrong direction when dragging

#jira UE-183454
#jira UE-183453
#rb kiaran.ritchie
#preflight 643d63df8e01968448cf53db

[CL 25085825 by benoit gadreau in ue5-main branch]
2023-04-18 10:17:27 -04:00
jimmy andrews
5337719d2e Fix vox offset tool issues:
- Warn about artifacts on meshes with open boundaries
 - Fix some settings not being saved/restored
 - Fix transaction name on undo/redo not matching the tool name

Also: Make the asset warning for base interactive tool only clear the tool's display message if it set a display message when it was last called, so that it is less likely to clear unrelated display messages when called with no warning to display.

#jira UE-180838
#jira UE-180758
#jira UE-180838
#rb rinat.abdrashitov
#preflight 641be32f25389270b7300ae4

[CL 24783364 by jimmy andrews in ue5-main branch]
2023-03-24 14:05:46 -04:00
ryan schmidt
dfefd74ece ToolsFramework: add ray-distance test for rectangle border segments in UGizmoRectangleComponent::LineTraceComponent(), to make hit-testing of combined-gizmo plane-translate and scaling handles more consistent with axis-translate/rotate handles. Previously the cursor could be over the scaling handle line segments w/o a hit being registered.
#rb rinat.abdrashitov
#preflight 641c98d1c44ce895fc50bd55

[CL 24771450 by ryan schmidt in ue5-main branch]
2023-03-23 20:47:41 -04:00
semion piskarev
c777312de7 InteractiveToolsFramework: Fix click drag behaviors passing bogus world ray to their targets when a modifier key is pressed during a drag.
#rb Jimmy.Andrews
#jira UE-175199
#preflight 63e6660326382d011476915f

[CL 24135376 by semion piskarev in ue5-main branch]
2023-02-11 11:39:21 -05:00
nathan mitchell
e3e02771a5 InteractiveToolsFramework: Adjust how the CombinedTransformGizmo handles the scale axis handles in cases where only two axes are requested. The old approach had the handles react to the camera direction at all times, causing issues in the UV Editor and inconsistent orientations of the handles relative to the plane in the case of only two axes. The new approach only is reactive to the camera in cases of one or three axes and locks the handles into a single plane if exactly two axes are configured in the gizmo.
#rb Jimmy.Andrews
#preflight 63e168bd14326f9a408e4888
#jira UE-157771

[CL 24043013 by nathan mitchell in ue5-main branch]
2023-02-06 19:59:58 -05:00
semion piskarev
8fd50edb61 InteractiveToolsFramework: Add a couple ensures to transform proxy begin/end change calls to avoid crashes in misuse.
#rb Jimmy.Andrews
#preflight 63ce9d9a3a03cb0bbff021cc

[CL 23815891 by semion piskarev in ue5-main branch]
2023-01-23 12:48:56 -05:00
semion piskarev
f18d6198cc MeshModelingTools: Add gizmo numerical UI.
- Added FTransformGizmoDataBinder which allows for gizmos to be bound to vectors such that the vectors are updated when the gizmo changes, and the gizmo is updated from vectors when asked. This should make it easy-ish to create displays of gizmos.
- Used the data binder in STransformGizmoNumericalUIOverlay, an overlay containing a draggable numerical UI panel for gizmos. Note that currently all changes, including typing, intentionally go down a gizmo drag path, meaning that they trigger the begin/end transform edit sequence calls, to make the tools treat them as a gizmo drag (in part because some tools might otherwise assume that a gizmo update is from an undo transaction or some other path that is special-cased).
- Added some slate things to ModelingEditorUI to support the numerical UI, in particular a viewport draggable box, and a widget that emits a tick delegate.
- Added some delegates to gizmo context object and combined transform gizmos to allow things to bind/unbind to/from them appropriately.

#rb Ryan.Schmidt
#preflight 63ce97ebf2318350a2f3a6c4

[CL 23815889 by semion piskarev in ue5-main branch]
2023-01-23 12:48:47 -05:00