Commit Graph

1375 Commits

Author SHA1 Message Date
karen jirak
231b06059a Reset buttons in details panel hard to hover/click
Problem: With recent changes to the details panel some styling updates caused the scrollbar section to overlap with the reset button when the scrollbar is not showing.

Solution: In SDetailsViewBase.cpp, in the GetScrollbarVisibility method call into DisplayManager.GetIsScrollbarShowing, to tell whether or not we need to show the section which has the scrollbar

#jira UE-195050
#rb brooke.hubert

[CL 27809503 by karen jirak in ue5-main branch]
2023-09-12 17:10:26 -04:00
patrick enfedaque
8fa9f45f2d Actor Picking: Experimental Editor Path Support
- Option that allows picking Actors inside a Level Instance
- Used by SPropertyEditorAsset when picking SoftObject refs to actors (if CVar "EditorPaths.Enabled" is true)

#jira UE-194662
#rb richard.malo, jeanfrancois.dube
#rnx

[CL 27788229 by patrick enfedaque in ue5-main branch]
2023-09-12 08:28:02 -04:00
jason stasik
99286b4f03 Allow math expressions on properties marked "Multiple Values"
#jira UE-194775
#rb karen.jirak,jamie.dale

[CL 27725171 by jason stasik in ue5-main branch]
2023-09-08 16:04:15 -04:00
karen jirak
02a8dc9818 Details Panel - Component card layout actions
The categories on the components for core entities now have an action menu. It has many things in it that will log.

#jira UE-194008
#rb  Brooke.Hubert

[CL 27717413 by karen jirak in ue5-main branch]
2023-09-08 13:15:51 -04:00
mikko mononen
85634ec1c3 Prevent accessing of invalid property nodes after undo and redo.
There's a window after undo (between undo and next property view tick) where property nodes point to the previous data.
If e.g. a property customization needs to refresh cached data after undo, they will try to access the data via old pointers.
Similar issue happens when removing item from array, the tick of IDetailCustomNodeBuilder gets called before we have updates the property nodes.

All these issues happen because when we update the child nodes, there are some parts of code that still hold hard refereces to them, and they are not
actually cleared on FPropertyNode::DestroyTree(). That in turn will cause IPropertyHandle to be in valid state, but pointing to data that has been freed.

- Added bIsDestroyed on property nodes to be able distinguish property nodes which are still alive but destoyed
- Prevent calling Tick() on property tree nodes, whose property node is destroyed
- Changed Gameplay Tag, Tag Container and Query to poll for changes, because undo callbacks are triggered at times when the property handle (and underlying node) is pointing to old data
- The above gameplay tag & co change will also react to property changes from outside the details panel

#jira UE-188117 UE-190882

[CL 27705747 by mikko mononen in ue5-main branch]
2023-09-08 04:42:59 -04:00
ben hoffman
18eb67c78c Implement GetOptions for UPARAM and add it for ByProfile traces
#rb dave.jones2

#ushell-cherrypick of 27593453 by kristof.morva1

[CL 27597870 by ben hoffman in ue5-main branch]
2023-09-05 11:33:21 -04:00
aditya ravichandran
a90d73d766 Asset Editors: Add support for opening cooked assets in a new "Read Only" mode for asset editors, starting with the Static Mesh Editor and Texture Editor.
#jira UE-187048
#rb jason.stasik

[CL 27595048 by aditya ravichandran in ue5-main branch]
2023-09-05 10:01:26 -04:00
nick edwards
efc9f92ca6 Introduce validation for MustImplement meta tags for SPropertyEditorClass and SPropertyEditorEditInline to prevent non-interface classes being specified, and to protect against UInterface from being specified.
#rb justin.hare

[CL 27481387 by nick edwards in ue5-main branch]
2023-08-30 08:00:01 -04:00
karen jirak
30fd8b7291 Create CVar to enable card layout through out the interface
This enables the card layout upon renewal of selected items in UE. I added the CVar DetailsPanel.Style.EnableCardLayout. When true throughout UE Card layout will be used, else the Classic details panel layout will be used. Also made it so the hiding\showing of the component editor is independant of the details style, by adding a ShouldHideComponentEditor to the DetailsVieiwObjectFilter, which is checked in SActorDetails.cpp to see if the Component Editor should be shown. SDetailsView has been updated to return the Card layout as the primary style key if DetailsPanel.Style.EnableCardLayout is true.


#jira UE-194197
#rb Ronald.Koppers

[CL 27475943 by karen jirak in ue5-main branch]
2023-08-29 23:07:56 -04:00
nick edwards
a8efda3202 Restore internal linkage to FindOrLoadClass functions in SPropertyEditorClass.cpp and SPropertyEditorEditInline.cpp
#rb none

[CL 27444303 by nick edwards in ue5-main branch]
2023-08-29 09:40:26 -04:00
nick edwards
e01b84f0f9 Move SPropertyEditorClass's FindOrLoadClass out of the global namespace into UE::PropertyEditor::Class::Private to address build issue.
#rb none

[CL 27443519 by nick edwards in ue5-main branch]
2023-08-29 09:27:10 -04:00
nick edwards
37bfe77b7d Support MustImplement, AllowedClasses and DisallowedClasses filtering for EditInline properties.
#rb Patrick.Boutot

[CL 27443224 by nick edwards in ue5-main branch]
2023-08-29 09:21:08 -04:00
mikko mononen
70c2abf5cc Added ScrollPropertyIntoView() to details view and fixed default property button padding
- Fixed padding of default buttons contaier (or else the widget created with CreateDefaultPropertyButtonWidgets() will unintentionally make a row taller)
- Added IDetailsView.ScrollPropertyIntoView(), similar to HighlightProperty() sans does not set highlight

[CL 27407050 by mikko mononen in ue5-main branch]
2023-08-28 04:23:29 -04:00
karen jirak
e8d9012e02 Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb aditya.ravichandran

[CL 27395322 by karen jirak in ue5-main branch]
2023-08-25 18:28:05 -04:00
daren cheng
bccad8258a Fix PropertHandleRotator crash when no children not yet populated
#jira UE-181135
#rb Patrick.Boutot

[CL 27379084 by daren cheng in ue5-main branch]
2023-08-25 11:55:33 -04:00
hilda cruz
94ea127efe [Backout] - CL27366337 due to build error
#rnx
[FYI] Karen.Jirak
Original CL Desc
-----------------------------------------------------------------
Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb Brooke.Hubert

[CL 27366485 by hilda cruz in ue5-main branch]
2023-08-24 22:31:17 -04:00
karen jirak
b30cf9cdbf Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb Brooke.Hubert

[CL 27366356 by karen jirak in ue5-main branch]
2023-08-24 22:07:53 -04:00
andrew rodham
c8780d4340 Slate: Fixed FDeprecateSlateVector2D properties not being treated as vectors in the property editor
#rb Yohann.Dossantos

[CL 27308145 by andrew rodham in ue5-main branch]
2023-08-23 11:51:58 -04:00
karen jirak
e2ba4c5032 Revert: Updates for Modular Class Display to add a widget registration system and get it working for BaseToolkit and toolbars....
#rb none

[CL 27299600 by karen jirak in ue5-main branch]
2023-08-23 03:14:14 -04:00
karen jirak
acea30606e Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

#jira UE-192032
#rb Brooke.Hubert

[CL 27297832 by karen jirak in ue5-main branch]
2023-08-23 00:49:40 -04:00
mikko mononen
91a97670e9 [Backout] - CL27098170
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
Prevent accessing of invalid property nodes after undo and redo.

There's a window after undo (between undo and next property view tick) where property nodes point to the previous data.
If e.g. a property customization needs to refresh cached data after undo, they will try to access the data via old pointers.
Similar issue happens when removing item from array, the tick of IDetailCustomNodeBuilder gets called before we have updates the property nodes.

All these issues happen because when we update the child nodes, there are some parts of code that still hold hard refereces to them, and they are not
actually cleared on FPropertyNode::DestroyTree(). That in turn will cause IPropertyHandle to be in valid state, but pointing to data that has been freed.

- Detach property nodes recursively on FPropertyNode::DestroyTree(), also clearing parent pointers to that the invlidate property path cannot be followed.
- Call update view (same as tick) after undo to invalidate property nodes which do not point to correct memory anymore
- Use FEditorDelegates::PostUndoRedo instead of undo client, as in some rare cases with consequtive undo/redo the undo client callbacks get called on a stale pointer
- Postpone gameplay tag caching to next tick, since the delegates are called in reverse and SDetailsView gets OnUndoRedo gets called after out customization

#jira UE-190882

[CL 27169489 by mikko mononen in ue5-main branch]
2023-08-17 07:44:28 -04:00
charles lefebvre
eec5e81cb7 Slate: SClassPropertyEntryBox: Add optional class filters
#rb Patrick.Boutot

[CL 27116022 by charles lefebvre in ue5-main branch]
2023-08-15 15:25:40 -04:00
mikko mononen
5bb059d5a7 Prevent accessing of invalid property nodes after undo and redo.
There's a window after undo (between undo and next property view tick) where property nodes point to the previous data.
If e.g. a property customization needs to refresh cached data after undo, they will try to access the data via old pointers.
Similar issue happens when removing item from array, the tick of IDetailCustomNodeBuilder gets called before we have updates the property nodes.

All these issues happen because when we update the child nodes, there are some parts of code that still hold hard refereces to them, and they are not
actually cleared on FPropertyNode::DestroyTree(). That in turn will cause IPropertyHandle to be in valid state, but pointing to data that has been freed.

- Detach property nodes recursively on FPropertyNode::DestroyTree(), also clearing parent pointers to that the invlidate property path cannot be followed.
- Call update view (same as tick) after undo to invalidate property nodes which do not point to correct memory anymore
- Use FEditorDelegates::PostUndoRedo instead of undo client, as in some rare cases with consequtive undo/redo the undo client callbacks get called on a stale pointer
- Postpone gameplay tag caching to next tick, since the delegates are called in reverse and SDetailsView gets OnUndoRedo gets called after out customization

#jira UE-190882

[CL 27098189 by mikko mononen in ue5-main branch]
2023-08-15 04:12:54 -04:00
alex thomson
fef7e6989e Lazy refresh of the tree for a big speedup when filtering in the Details pane.
#rb karen.jirac
#rnx
#p4v-preflight-copy 26987960

(checking in directly as Horde / P4 is down - preflights completed successfully https://horde.devtools.epicgames.com/job/64d4ddff7f3f866457cf7959)

[CL 26991755 by alex thomson in ue5-main branch]
2023-08-10 10:25:28 -04:00
david bromberg
22b1da7d0f Sequencer- Refactor referencing of materials for component material tracks to allow for more ways to resolve materials, including:
* Adding the ability to reference component material slots based on material slot name rather than just by index. This prevents breaking resolution of material parameter tracks when materials indices get reordered within a mesh, as long as the slot names remain consistent. This type of reordering can happen when reimporting meshes for example, as material order may not be consistent depending on your mesh authoring package. It can also happen when creating meshes dynamically, which certain customers do. For now, we try to match by slot name first, and then by index if we cannot find a material by its slot name (or one doesn't exist in the binding for backwards compatibility). In future we will introduce ways for the user to update or fix track bindings manually, for example in cases that material slot names are renamed.
* Adding the ability to reference the OverlayMaterial in MeshComponents, and animate parameters in it, or change which material is assigned to the overlay material property using a material switcher track.
* Formalizing binding to decal material- previously this was just done by default if the component the track was added to was a DecalComponent.

The above refactor also allows us to more easily add animation of other types of material tracks in other components.

In addition to the above, I've exposed the Material Slot Name (read-only) in the outliner/details panel on PrimitiveComponent. Previously you could only see these slot names by opening the mesh asset.

See design docs for this here and here:
https://docs.google.com/document/d/137PB3QN-dBdESJGfrfscNsiQPZmhg9FxIFerU1M00uU/edit
https://docs.google.com/document/d/18dlhZcJ8wE-b_Q9ulTpVirmmY_Na8w-5ZuZjeAA8oEI/edit


#jira UE-119707, UE-189930
[REVIEW] [at]UE-Sequencer

[CL 26915111 by david bromberg in ue5-main branch]
2023-08-08 09:38:39 -04:00