[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]
(changed the syntax of DiffUtils::Identical to require outer objects for the properties)
#jira UE-110730
#rb dan.oconnor
[CL 26829727 by jordan hoffmann in ue5-main branch]
Since the killpendingkill initiave we can have mutiple UClass objects that share the same name but have diferent paths. There is no value to only pass the name of class since it cannot be use to find class since it might yield multiple classes.
This also remove an issue when parsing the string since the full path of an class cannot start with an '_' while a class object can. This was an issue since the parser is not able to recognize a token that start with an '_'.
#jira UE-172066
#rb JeanLuc.Corenthin
[CL 26705114 by julien stjean in ue5-main branch]
[FYI] jordan.hoffmann
Original CL Desc
-----------------------------------------------------------------
[Feature] made local assets editable in DataAsset diffs
[BugFix] invisible merge buttons were clickable in detail splitter when they shouldn't be
[BugFix] blueprint diffs weren't updating their detail panels when the objects are edited
[CL 26661731 by jordan hoffmann in ue5-main branch]
[BugFix] invisible merge buttons were clickable in detail splitter when they shouldn't be
[BugFix] blueprint diffs weren't updating their detail panels when the objects are edited
[CL 26659931 by jordan hoffmann in ue5-main branch]
- Replace the access to a function pointer through a raw pointer to access through a shared pointer: The object was deleted before the function was caled.
#jira UE-188999
#rb patrick.boutot
[CL 26432885 by jeanluc corenthin in ue5-main branch]
-Fix: Blueprint Lights Parameters Switch To "Multiple Values" When Transformed
#jira UE-169485
#rb Jason.Walter
[CL 26274638 by jared therriault in ue5-main branch]