Commit Graph

200 Commits

Author SHA1 Message Date
Jamie Dale
ca08dfb897 Removed GLevelEditorModeTools use from typed element interface implementations
#rb Brooke.Hubert
#rnx

[CL 14828542 by Jamie Dale in ue5-main branch]
2020-12-01 12:05:35 -04:00
sebastian nordgren
c678b96a4b FDetailsViewArgs 8 parameter defaulted constructor deprecated and all usages fixed.
#rb lauren.barnes

[CL 14750682 by sebastian nordgren in ue5-main branch]
2020-11-16 08:16:15 -04:00
Matt Kuhlenschmidt
cd26fdd0cf Tab drawer improvements
- activating an editor mode that was already active but in an drawer, opens that drawer
- dock tabs can now register for drawer opening/closing callbacks so that they can do stuff when the drawer opens or closes. For example, now the placement browser focuses its search field when the drawer opens

[CL 14723696 by Matt Kuhlenschmidt in ue5-main branch]
2020-11-11 16:21:17 -04:00
Jamie Dale
6dc9d4f940 Formalized the process for creating higher-level element interfaces that can be customized by specific asset editors
This takes the framework used for UTypedElementSelectionSet and moves to it a utility base class that other higher-level interfaces can also make use of.

This also changes the interface implementations for these systems to be non-UObject types, as the script exposure is handled by the owner object, and this can solve some cyclic parsing issues with UHT (eg, between UnrealEd and LevelEditor).

#rb Chris.Gagnon, Brooke.Hubert
#rnx

[CL 14704895 by Jamie Dale in ue5-main branch]
2020-11-10 14:12:52 -04:00
geoff evans
bde28af943 Redefine Content Browser's "RealTime Thumbnails" to be only the item the cursor is hovering over instead of every thumbnail in an SAssetView.
This change removes the use of boolean attribute AreRealTimeThumbnailsAllowed. This attribute is less than ideal, design-wise, since it uses the thumbnail pool to drive the behavior of the thumbnails. Instead we build in default hover behavior to the thumbnail slate widgets, and implement plumbing for custom pathways to enable/disable real time behavior per thumbnail.

-> Add default OnMouseEnter/OnMouseLeave events on SAssetThumbnail for default hover behavior (over the actual thumbnail image), which supports detail panel, customizations, and things like FoliageEditor and Niagara Stack Overview thumbnail strip.
-> Add thumbnail initialize pathway support for disabling default hover behavior for use cases where the logical asset is more than just the thumbnail image (border elements, text elements with the asset name, etc).
-> Add custom OnMouseEnter/OnMouseLeave handlers on SAssetTileItem, SAssetListItem to perform real time behavior on entire logical asset item in Content Browser and Asset Picker.

#rb francis.hurteau
#fyi matt.kuhlenschmidt
#jira UETOOL-2363

[CL 14673948 by geoff evans in ue5-main branch]
2020-11-05 21:41:33 -04:00
Richard Malo
a961c2338b Added DataLayer browser & editing.
#rb jeanfrancois.dube, patrick.enfedaque

[CL 14597717 by Richard Malo in ue5-main branch]
2020-10-28 06:51:40 -04:00
Jamie Dale
ff7d47fbf4 Made typed element includes more consistent
- Moved all the "framework" code under "Elements/Framework".
 - Moved all the "interface" code under "Elements/Interfaces".

This lets the code be split over multiple modules (including the Engine and Editor) while retaining consistent include paths with things like "Elements/Actor", "Elements/Component", etc, as well as letting new interfaces and frameworky things be added outside of the core typed element modules while still maintaining a coherent include scheme.

#fyi Brooke.Hubert
#rb Chris.Gagnon

[CL 14585700 by Jamie Dale in ue5-main branch]
2020-10-27 07:00:04 -04:00
Jamie Dale
db7459f98e Migrated undo/redo support from USelection to UTypedElementSelectionSet
This adds some new functions to UTypedElementSelectionInterface to deal with writing the underlying data needed by an element (WriteTransactedElement) to factory it again later (ReadTransactedElement) when restoring a prior selection state.

#rb Chris.Gagnon

[CL 14585511 by Jamie Dale in ue5-main branch]
2020-10-27 05:49:47 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
Jamie Dale
e3ac0f1b0f Updated USelection to be a legacy shim around a UTypedElementSelectionSet
This change removes the original UObject-array based USelection implementation that was still being used for generic UObject selection, in favor of always using a UTypedElementSelectionSet to back the USelection.

 - Added an "Object" element type, so that generic objects can be stored in a UTypedElementSelectionSet.
 - Added UEngineElementsLibrary to manage the creation and destruction of "Object" elements, as CoreUObject cannot directly use the TypedElementFramework.
   - Also migrated "Actor" and "Component" element creation and destruction to UEngineElementsLibrary for consistency.
 - Fixed a race condition in the AcquireEditorXElementHandle functions due to the TTypedElementOwnerStore lock being released between the find and the add (see TTypedElementOwnerStore::FindOrRegisterElementOwner).
 - Moved the GetObject function onto a new UTypedElementObjectInterface, as that function will likely be needed by legacy code outside of selection.
 - Removed UTypedElementSelectionSet::GetMutableElementList in favor of selectively exposing certain functions from the underlying UTypedElementList, which should avoid potential abuse or misuse of the underlying list.

#rb Brooke.Hubert
#rnx

[CL 14535062 by Jamie Dale in ue5-main branch]
2020-10-21 12:09:05 -04:00
Jamie Dale
64b075c319 First phase of converting Level Editor viewport selection to use typed elements
This phase focuses on the minimum set of changes needed to port the UnrealEd logic for handling the selection of actors and components within the Level Editor viewport to use typed element interfaces. There is still future work to be done to clean this up further.

This change adds a new framework type, UTypedElementSelectionSet, which manages the concept of "selection" for typed elements. Internally this owns its own UTypedElementList, and ensures that mutation of that list goes via the UTypedElementSelectionInterface implementations.

To allow specific asset editors to customize their selection behavior, UTypedElementSelectionSet may have "selection proxies" that implement UTypedElementAssetEditorSelectionProxy registered to it. This is what's used to allow the level editor to implement its type specific rules.

The core Level Editor selection implementation for actors and components now lives inside UActorElementLevelEditorSelectionProxy and UComponentElementLevelEditorSelectionProxy, and the existing UUnrealEdEngine functions that used to deal with this logic now proxy through to those implementations via UTypedElementSelectionSet. This means that the implementation has moved into the LevelEditor module without UnrealEd even knowing.

Future work will focus on:
 - Cleaning up the legacy USelection bridge, so that all USelection instances are just a proxy around a UTypedElementSelectionSet.
   - This will involve making a basic "Object" element type to handle the generic UObject based selection (for assets) that USelection also handles.
   - This should allow GetMutableElementList to be removed from UTypedElementSelectionSet, to avoid potential abuse or misuse.
 - Investigating the best way to integrate element based selection into the editor modes.

#rb Chris.Gagnon, Brooke.Hubert
#rnx

[CL 14470181 by Jamie Dale in ue5-main branch]
2020-10-11 12:40:44 -04:00
brooke hubert
5a5af4d1d1 The mode manager will now internally ensure only one visible mode is active at a time.
#rnx
#Jira UE-97666
#review-14198716
#rb chris.ganon
#rb lauren.barnes

[CL 14451809 by brooke hubert in ue5-main branch]
2020-10-08 19:05:05 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
brooke hubert
127f266f84 Legacy Mode UI removed.
#rnx
#Jira UE-97668
#rb lauren.barnes
#fyi matt.kuhlenschmidt

[CL 14357487 by brooke hubert in ue5-main branch]
2020-09-21 13:45:49 -04:00
Jamie Dale
149fbb70c4 Improved scripting support for typed elements
- Ported the typed element list (FTypedElementList) to be a UObject (UTypedElementList) so that it can be used with UFUNCTION arguments.
   - This also removes FTypedElementListPtr, and exposes UTypedElementList functions to scripting.
 - Exposed UTypedElementRegistry functions to scripting.
 - Added UTypedElementHandleLibrary to expose basic FTypedElementHandle functionality to scripting.
 - Exposed AActor and UActorComponent functions for getting an element handle.

#rb Chris.Gagnon
#rnx

[CL 14311016 by Jamie Dale in ue5-main branch]
2020-09-14 13:57:25 -04:00
patrick enfedaque
6e52eb6e33 WorldPartition: Remove Summon from Levels Window and Add it to the Window menu
#rb jeanfrancois.dube

#ROBOMERGE-SOURCE: CL 14310531 in //UE5/Release-5.0-M2/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-M2 -> Main) (v738-14305781)

[CL 14310533 by patrick enfedaque in ue5-main branch]
2020-09-14 12:47:01 -04:00
brooke hubert
51b489a2fa Fixing a shutdown crash in the global editor mode manager.
#rnx
#Jira none
#review-14283233
#rb lauren.barnes

[CL 14283786 by brooke hubert in ue5-main branch]
2020-09-09 16:21:29 -04:00
brooke hubert
6256c51b62 Remove legacy placement editor mode.
#rnx
#Jira UE-97664
#rb matt.kuhlenschmidt

[CL 14269170 by brooke hubert in ue5-main branch]
2020-09-08 12:11:22 -04:00
Matt Kuhlenschmidt
8d0acfb473 Further flattening of the editor by replacing background colors
[CL 14243772 by Matt Kuhlenschmidt in ue5-main branch]
2020-09-02 09:16:04 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
Jamie Dale
f8138bbb01 Switching USelection to use element lists by default for actors and components
#rb Chris.Gagnon
#rnx

[CL 14127286 by Jamie Dale in ue5-main branch]
2020-08-17 16:52:54 -04:00
Matt Kuhlenschmidt
c112e6b679 Fix compile button options not functioning on status bar
#jira UE-96987

[CL 14126599 by Matt Kuhlenschmidt in ue5-main branch]
2020-08-17 15:57:44 -04:00
Matt Kuhlenschmidt
dec1e638e9 Adjusted editor default layout
[CL 14092592 by Matt Kuhlenschmidt in ue5-main branch]
2020-08-12 12:47:14 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Matt Kuhlenschmidt
dc77765350 Move compile off the main toolbar and into the status bar
[CL 14047788 by Matt Kuhlenschmidt in ue5-main branch]
2020-08-06 11:44:53 -04:00