Commit Graph

59 Commits

Author SHA1 Message Date
henrik karlsson
b11d35f80e [UnrealEd]
* Reverted the changes in 25904929 related to subclasses to TCommands<>.

This code relies on undefined behavior of how things are inlined. base class is a template with a static variable. One instance of that static variable exists in each dll/exe. To call TCommands<>::Get() would return the instance in the same dll.
But, because the subclass has dllexport on the type and not the members it will generate a Get function that is not inlined. The callsite when calling Get will actually then use the instantiated Get() function and not the inlined one.

So for

class API X : public TCommands<X> {}

it will (for now) work to call

X::Get() and get the same instantiated singletone.

Calling

TCommands<X>::Get() will definitely not work and return the singleton instantiated in the same dll/exe

#rb none

[CL 25909947 by henrik karlsson in ue5-main branch]
2023-06-09 23:42:49 -04:00
henrik karlsson
efe504aa6b [UnrealEd]
* Moved dll export from type to methods/statics

#rb none

[CL 25904988 by henrik karlsson in ue5-main branch]
2023-06-09 17:15:53 -04:00
maxime mercier
a6efb8368a First pass at the Entity Prefab Editor
#preflight 64750a3419401abf792f479c

[CL 25675784 by maxime mercier in ue5-main branch]
2023-05-30 09:07:34 -04:00
aditya ravichandran
31830290ab Asset Editors: Deprecate OnClose and RequestClose in favor of similar functions that take in a close reason
Fix a crash in some asset editors when you force deleted an asset with pending changes and hit "cancel" on the save dialog

#jira UE-107248
#preflight 64517c880e33f2d51d6e3adb

[CL 25321878 by aditya ravichandran in ue5-main branch]
2023-05-03 14:45:26 -04:00
bryan sefcik
8cc129f2b6 IWYU Pass 1 - Engine/Source/Editor/...
#jira
#preflight 6306736ac85b7fef22be7751

[CL 21558583 by bryan sefcik in ue5-main branch]
2022-08-24 22:45:13 -04:00
bryan sefcik
06f6cf2700 Added IWYU pragmas.
#preflight 62d018faa6141b6adfe93e82

[CL 21090145 by bryan sefcik in ue5-main branch]
2022-07-14 09:41:39 -04:00
zach rammell
99738c0f68 Refactor persona editor modes/mode manager to use ITF context objects for persona-only interfaces instead of static casting
#rb brooke.hubert Thomas.Sarkanen
#jira UE-143249
#preflight 628549709e72602f6ab62b3b

[CL 20282438 by zach rammell in ue5-main branch]
2022-05-19 12:34:51 -04:00
Andrew Davidson
9741042a2b Reduce use of UE_DECLARE_LWC_TYPE macro to improve Intellisense.
Moved Math forward declarations from CoreFwd.h to Math/MathFwd.h
#rb steve.robb
#preflight 62837df43c1cdc59e2b07dd5

[CL 20240602 by Andrew Davidson in ue5-main branch]
2022-05-17 07:05:35 -04:00
daren cheng
99592a0721 Widget Tool Palette Prototype.
Add Marquee & create widget tools.
Add framework for widget-based tools.

#preflight 62202c37123d7a7f69141278
#jira UETOOL-4564 UETOOL-4565
#rb Vincent.Gauthier

[CL 19248542 by daren cheng in ue5-main branch]
2022-03-03 14:01:42 -05:00
daren cheng
526c49058a Add Toolstack support to tool palettes.
#jira UE-138664
#preflight 6202ee26c451a5d0dc08eec6
#rb brooke.hubert Rex.Hill Ryan.Schmidt Patrick.Boutot
#fyi Ryan.Schmidt, Lauren.Barnes

[CL 19020456 by daren cheng in ue5-main branch]
2022-02-16 15:08:30 -05:00
patrick enfedaque
03bb3a2f2a - Prevent 'Save Current Level As' through editor modes
- Avoid adding newly saved level if RemoveLevelFromWorld fails

#rb richard.malo, brooke.hubert
#preflight 61e1ae58076be0fc4e15ea77

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18620036 in //UE5/Release-5.0/... via CL 18620344 via CL 18620779
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18621059 by patrick enfedaque in ue5-main branch]
2022-01-14 14:01:23 -05:00
tyson brochu
e33f9f308e Static Mesh Editor: prompt user to Accept/Cancel current modeling tool (if any) when shutting down SME
#jira UE-137979
#rnx
#preflight 61e06ba3797757aace83aeec

#ROBOMERGE-AUTHOR: tyson.brochu
#ROBOMERGE-SOURCE: CL 18600116 in //UE5/Release-5.0/... via CL 18600130 via CL 18600156
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18600178 by tyson brochu in ue5-main branch]
2022-01-13 13:39:41 -05:00
ryan schmidt
27ba71e214 ModelingTools: Add support for reading and writing to a specific LOD via IMeshDescriptionProvider/Committer. Refactor various other aspects of MeshDescription access. Update MeshTransferTool to be able to transfer from and to specific LODs.
Add new MeshTargetInterfaceTypes.h file, move EStaticMeshEditingLOD there and rename to EMeshLODIdentifier. Add FGetMeshParameters and FCommitMeshParameters types.

IMeshDescriptionProvider::GetMeshDescription() now takes FGetMeshParameters to optionally specify LOD.
Added IMeshDescriptionProvider::GetMeshDescriptionCopy() function, to handle copy-case.
removed IMeshDescriptionProvider::CalculateAutoGeneratedAttributes(). This was only being used to force Tangents computation, which can now be done via GetMeshDescriptionCopy() and FGetMeshParameters.bWantMeshTangents option

IMeshDescriptionCommitter commit functions now take a FCommitMeshParameters to optionally specify target LOD.

StaticMeshComponentToolTarget::GetMeshDescriptionCopy() added, optionally computes auto-generated MeshDescription attributes on the copy

StaticMesh(Component)ToolTarget updated to support FCommitMeshParameters target-LOD.

SkeletalMesh, Volume, and DynamicMesh ToolTargets updated for new APIs but do not currently support any of the new LOD parameters. These should never be called w/ LOD parameters in the current codebase, ensures added to catch any errors (they would be non-fatal).

UE::ToolTarget::GetMeshDescription() and GetMeshDescriptionCopy() in now take FGetMeshParameters argument.
Removed bWantMeshTangents param to GetMeshDescriptionCopy(), now done via FGetMeshParameters. Updated call sites.

TransferMeshesTool now supports specifying read and write LOD (numbered or HiRes) for StaticMeshComponent source/target, via above functions.
TransferMeshesTool can now also target a new LOD in a StaticMeshComponent, index is 1 larger than current maximum source LOD.

#rb lonnie.li, rinat.abdrashitov
#rnx
#jira none
#preflight 61b8d56b2e65a1df046aa5e1

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18461686 in //UE5/Release-5.0/... via CL 18461725
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18461778 by ryan schmidt in ue5-release-engine-test branch]
2021-12-14 18:40:01 -05:00
patrick enfedaque
77435048b2 EditorMode:
- Guard against legacy mode getting GCed while Deactivating modes
- ForEachMode iterates over array copy in case original array is modified while iterating
- New IsSelectionDisallowed virtual allows mode to refuse selection of actor regardless of other modes

#rb brooke.hubert, lauren.barnes, julien.stjean

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18311266 in //UE5/Release-5.0/... via CL 18311467
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18311589 by patrick enfedaque in ue5-release-engine-test branch]
2021-11-29 12:07:42 -05:00
semion piskarev
d298533e46 Make UEdMode::GetDefaultToolScope non-virtual again to force modes to use mode-level contexts. To work this way, move the initialization of context objects in the UV editor into the UV editor mode, passing in the needed information from the UV asset editor.
#rb Brooke.Hubert
#rnx
#jira
#preflight 619eed58aa4521f9e7d30a15

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18291767 in //UE5/Release-5.0/... via CL 18291790
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18291828 by semion piskarev in ue5-release-engine-test branch]
2021-11-24 21:59:43 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
andrew davidson
57beb335f2 Merging //UE5/Dev-LargeWorldCoordinates [at] 17581892 to //UE5/Main
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 17595295 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17595306 by andrew davidson in ue5-release-engine-test branch]
2021-09-22 10:01:48 -04:00
ryan schmidt
55e4644fd1 Add support for UEdMode-level InteractiveToolsContext which exists at the same time as the existing ModeManager-level ITC.
- rename UEdModeInteractiveToolsContext to UEditorInteractiveToolsContext, made all functions virtual so they can be customized for the new Editor/EdMode implementations where necessary
- add UModeManagerInteractiveToolsContext and UEdModeInteractiveToolsContext subclasses. Most functionality stays in the base class. Mouse-handling functions that manipulate the InputRouter move to ModeManagerITC.
- EdModeITC now is initialized based on a ModeManagerITC, and shares it's InputRouter
- ModeManagerITC creates the child EdModeITCs, forwards Tick/Render/DrawHUD calls
- FEditorModeTools now creates a ModeManagerITC

- Add EToolsContextScope enum, with options for Editor and EdMode ToolsContext
- UEdMode::Enter() now creates a child EdModeITC via new EditorITC::CreateNewChildEdModeToolsContext() function above, in addition to storing reference to the ModeManagerITC. Internal code updated to handle both ITCs.
- The EdModeITC is shut down on ::Exit() and unregistered from the EditorITC parent
- UEdMode ITC access functions (GetToolsContext, GetToolManager, RegisterTool) now take an optional Scope argument
- UEdMode::GetDefaultToolScope() allows EdModes to define default scope for the entire mode, defaults to Editor scope

- removed unused CanStartTool()/etc wrapper functions from FModeToolkit, they were not being called
- FModeToolkit::Init() now listens to events from both the ModeManagerITC and EdModeITC, delete cleans them both up
- FModeToolkit::OnToolStarted() checks both ITCs to see which one owns the new Tool

- updated all EdModes that were directly accessing the UEdMode::ToolsContext member, replaced with calls to GetToolsContext() / GetToolManager() APIs
- updated ModelingToolsEditorMode to use EdMode ToolScope

#rb brooke.hubert
#rnx
#jira none
#preflight 6140cc1130c00d0001dc4b9e

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17510176 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17510201 by ryan schmidt in ue5-release-engine-test branch]
2021-09-14 17:11:13 -04:00
steven dao
86c41de360 Deprecate IAssetEditorInstance::GetToolbarTabId and implementations - the toolbar tab is no longer registered by asset editors
#jira UETOOL-3862
#rb lauren.barnes
#preflight 611bf56e3a81b00001053ff1

#ROBOMERGE-SOURCE: CL 17210215 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17210225 by steven dao in ue5-release-engine-test branch]
2021-08-17 21:58:52 -04:00
Ryan Schmidt
489dbc61c7 ToolsFramework: remove the AssetAPI concept from the Interactive Tools Framework. Replaced by ModelingObjectCreationAPI in ModelingComponents.
#rb none
#rnx
#jira none
#preflight 60b7e9448a2a64000126348c
#fyi brooke.hubert

[CL 16540327 by Ryan Schmidt in ue5-main branch]
2021-06-02 18:01:32 -04:00
Ryan Schmidt
bca2b32ac7 ModeingMode: restore EditingLOD functionality lost in ToolTarget transition. Port EditingLOD functionality from FStaticMeshComponentTarget/Factory to UStaticMeshComponentToolTarget/Factory. Add UToolTargetManager::FindFirstFactoryByPredicate() and FindFirstFactoryByType(). ModelingToolsEditorModeToolkit now also looks up the StaticMeshFactory and updates the EditingLOD when it changes in the UI.
EStaticMeshEditingLOD enum moved to ComponentSourceInterfaces.h to make it more widely available.

Add ToolBuilderUtil::EnumerateComponents() and ToolTargetManager::EnumerateSelectedAndTargetableComponents(), this allows ToolBuilders to do additional checks on the valid Targets without having to make local arrays/etc. Fix SetCollisionGeometryTool to not build ToolTargets every frame just to check if one is a StaticMeshComponent.

#rb lonnie.li
#rnx
#jira none
#preflight 6092e932242f6600012445b0

[CL 16213180 by Ryan Schmidt in ue5-main branch]
2021-05-05 16:43:24 -04:00
Andrew Davidson
3ddc3a4da3 Merge up from //UE5/Dev-LargeWorldCoordinates
#rb none

[CL 16211417 by Andrew Davidson in ue5-main branch]
2021-05-05 15:07:25 -04:00
brooke hubert
718572f53c Fixed an issue with deferred deletion and toggling editor modes that caused the non-integrated toolkit palettes to linger while the mode was getting cleaned up on tick.
#Jira none
#preflight 60646c0d78a2e10001dfe3fe
#rb lauren.barnes louise.rasmussen
#fyi jeanmichel.dignard

[CL 15874563 by brooke hubert in ue5-main branch]
2021-03-31 09:51:38 -04:00
brooke hubert
b7a9e11206 Split legacy viewport input handling from UEdMode.
Move potentially duplicated work (like bracket draws) to the mode manager. Input and drawing of mode specifics should be handled going forward by ITF tools and gizmos in the modes.

#rnx
#preflight 605c1a397f873d0001c5c66a
#Jira UE-103651
#rb lauren.barnes

[CL 15851576 by brooke hubert in ue5-main branch]
2021-03-29 11:32:25 -04:00
semion piskarev
a298e2f288 Made UEdMode disallow tool startup in PIE and SIE by default, and made that behavior subclass-configurable.
#rb Ryan.Schmidt, Brooke.Hubert
#jira UE-109360
#rnx

#ROBOMERGE-SOURCE: CL 15801810 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v783-15756269)

[CL 15808006 by semion piskarev in ue5-main branch]
2021-03-24 16:38:43 -04:00