- Added Identical() to FInstancedPropertyBag
- Fixed FInstancedPropertyBag to reset when loading empty data
#jira UE-185342
[CL 27628535 by mikko mononen in ue5-main branch]
* IsPinTypeAccepted UFunction is now receiving a bool that will tell if the pin type is a child or not
* It will allow to filter out specific structures
* On PCG side, add the support for Vec2/Vec4/Quat/SoftObjectPath/SoftClassPath as graph parameters
#rnx
#rb ryan.buehler, wyatt.marvil
[FYI] julien.lheureux
[CL 27526219 by adrien logut in ue5-main branch]
* This change adds a funciton to PropertyBag to allow a caller to manually specify the name of the struct that gets generated.
* TEDS queries depend on matching specific types to have an effect. The Memento system can generate memento structs that need to have a one-to-one mapping to the mementoizable column to perform the translation between the two types. This requires that the generated type for column structs with two identical layouts be unique in order to create the correct processor.
#rb Mikko.Mononen
#jira UE-192033
[CL 27488088 by logan buchy 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]
Also make serialization symmetrical so struct serialized in cooked builds can be deserialized in Editor builds.
#rb mikko.mononen
#rb francis.hurteau
[CL 26583352 by yoan stamant in ue5-main branch]
* Otherwise we need to redo logic on the client side to set soft object pointers, when objects are not yet loaded.
#rb mikko.mononen
[CL 26011431 by adrien logut in ue5-main branch]
Editing multiple instanced struct instances will now edit the properties of the common struct of all instances (like object editing), rather than only editing instanced struct instances using the same struct type as the first instance being edited.
#jira
#rb Mikko.Mononen
[CL 25866991 by jamie dale in ue5-main branch]
* Add a TypeFilter callback to filter out some types when changing the type of a property
* Add a RemoveCheck callback to cancel the removal of a property
* Add generic way to invoke UFunctions. Will need to be moved in its seperate file later on.
#jira UE-183576
#rb mikko.mononen, julien.lheureux
#preflight 6479ff1fe75a2263919a6625
[CL 25774029 by adrien logut in ue5-main branch]