Commit Graph

106 Commits

Author SHA1 Message Date
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
helge mathee a8c7758a9c InputState: Make available to BP
#rb ryan.schmitt

[CL 27685240 by helge mathee in ue5-main branch]
2023-09-07 15:56:10 -04:00
christopher waters 4e96f4193d Removing UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_0 and UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_1 including all uses in the engine.
[CL 26259545 by christopher waters in ue5-main branch]
2023-06-27 11:54:23 -04:00
henrik karlsson 5db685f97d [Engine]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds

[CL 26082269 by henrik karlsson in ue5-main branch]
2023-06-17 18:13:06 -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
ryan schmidt 4061f31c7c ModelingTools: Add IMeshDescriptionProvider::GetMeshDescriptionLOD() which returns current LOD for a ToolTarget. Implement in StaticMesh Tool Targets. Add UE::ToolTarget::GetTargetMeshDescriptionLOD() which wraps this function
#rb jimmy.andrews
#preflight 646631103660522200164f0c

[CL 25529470 by ryan schmidt in ue5-main branch]
2023-05-18 13:52:35 -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
tyson brochu 23204d6190 Cloth Paint Tool:
- Add a Gradient Interaction Type. The user selects "high" and "low" vertices and a gradient is automatically computed between them

#jira UE-183874
#rb jimmy.andrews
#preflight 644805ccd07064cbaea8ce5a

[CL 25183697 by tyson brochu in ue5-main branch]
2023-04-25 13:16:11 -04:00
jimmy andrews 728376569f add initial triangulate splines tool
#jira UE-182355
#preflight 6446f41e2804595a04519002
#rb ryan.schmidt, david.hill

[CL 25175562 by jimmy andrews in ue5-main branch]
2023-04-24 23:31:18 -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 e5b9310407 add support for querying LOD support in a mesh description provider, and use this to add an option to apply Bake Transform and Pivot tools to all LODs
#jira UE-182339
#rb ryan.schmidt
#preflight 6439a35c8e019684483b37dd

[CL 25068419 by jimmy andrews in ue5-main branch]
2023-04-17 11:09:56 -04:00
Steve Robb 400da72613 Disabled deprecation warnings in FToolBuilderState's special member functions.
#rb none
#jira none
#preflight none

[CL 24925864 by Steve Robb in ue5-main branch]
2023-04-05 07:42:19 -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
steve robb 4900d8a570 Replaced TModels traits class with TModels_V.
#rb devin.doucette
#preflight 63d3aabf5354589b5cd2343b

[CL 23889491 by steve robb in ue5-main branch]
2023-01-27 14:51:16 -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
ryan schmidt 46630c002f ModelingMode: Selection system improvements. Add Disconnect command and various new Selection-Edit Commands
Add UInteractiveCommandResult, UInteractiveCommand::ExecuteCommand() now optionally can return a result subclass
Add UGeometrySelectionEditCommandResult, UGeometrySelectionEditCommand now can optionally return an "output" selection via this type
UGeometrySelectionManager::ExecuteSelectionCommand optionally can restore a selection after a command, via UGeometrySelectionEditCommandResult

Add UDisconnectGeometrySelectionCommand, implements disconnection of selected triangles (ie separates but not into a new mesh)
Add UModifyGeometrySelectionCommand, implements various selection edits (select all, expand to connected, invert, invert connected, expand, contract)
Add IGeometrySelector::InitializeSelectionFromPredicate() and ::UpdateSelectionFromSelection(), implement in UDynamicMeshSelector, used to implement selection edit commands
Add UI to enable new commands in Modeling Mode

#rb none
#preflight 63c047f4305002c64170f6a2

[CL 23667880 by ryan schmidt in ue5-main branch]
2023-01-12 14:52:52 -05:00
bryan sefcik b30383a834 Fixed compile issues found after moving module files around in the unity files.
Also added missing generated.h includes.

#jira
#preflight 639bbcb2776b61ba3b35a835

[CL 23535000 by bryan sefcik in ue5-main branch]
2022-12-15 19:56:15 -05:00
nathan mitchell 2a80a7febe InteractiveToolsFramework: Adds new helper methods to determine count ActorComponents that match TargetRequirements and an additional test predicate for specialized scenarios. Additionally adds a couple of helper methods to test for Volume components and component classes that support UVs. This is to fix the issues surrounding the UV modeling tools that shouldn't be viable for Volume type targets.
#rb Ryan.Schmidt
#preflight 639b914e2540a78d2702f8d8
#jira UE-169112

[CL 23533564 by nathan mitchell in ue5-main branch]
2022-12-15 18:17:12 -05:00
ryan schmidt aab78a868d ToolsFramework: Support optional Relative translation snapping (in World & Local coordinates) in CombinedTransformGizmo while still optionally supporting Absolute translation snapping in World coordinates. Previously only supported Absolute snapping in World coordinates. Relative is now the default, similar to standard UE gizmo.
- moved most functions defined in ParameterToTransformAdapters.h header into a new cpp to simplify debugging/etc
- UGizmoAxisTranslationParameterSource and UGizmoPlaneTranslationParameterSource now support optional constraints on the translation Delta
- CombinedTransformGizmo now has PositionAxisDeltaSnapFunction that, when in 'relative' mode, snaps the translation Deltas to increments via those constraints
- Added CombinedTransformGizmo::RelativeTranslationSnapping which controls relative vs absolute translation snapping, and can fetch value from ToolsContext
- Also added rotation-angle-delta constraint support UGizmoAxisRotationParameterSource and switched the gizmo to explicitly snap angle-deltas instead of trying to snap to "world rotation grid"
- Moved SnapToIncrement function to UE::Geometry namespace (in VectorUtil.h) and cleaned up a bit of duplicate code in UModelingSceneSnappingManager left over from pre-GeometryCore times

- Added FToolContextSnappingConfiguration::bEnableAbsoluteWorldSnapping, EdModeInteractiveToolsContext:: bEnableAbsoluteWorldSnapping and bits to hook this up
- Added UModelingToolsEditorModeSettings::bEnableAbsoluteWorldSnapping which stores this setting globally, but currently it is not serialized to config file, resets to default (Relative) on Editor restart
- Toolkit exposes toggle in the Selection toolbar menus

#rb none
#preflight 639b4036680483bcb1c33869

[CL 23532642 by ryan schmidt in ue5-main branch]
2022-12-15 17:03:36 -05:00