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]
- 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]
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]
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]
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]
- 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]
* 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]
#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]
* 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]
* 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]
[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]
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]
* 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/edithttps://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]