Commit Graph

1412 Commits

Author SHA1 Message Date
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
aditya ravichandran
91803370b2 Property Matrix: Fix a crash when you tried to edit a property on a light component because the table was being grabbed through the column which could be in the middle of reconstruction
#jira UE-188769
#rb jeanmichel.dignard

[CL 26854381 by aditya ravichandran in ue5-main branch]
2023-08-04 14:24:18 -04:00
jordan hoffmann
03c641763e [BugFix] false positive diff for UObject instances inside level blueprint's
(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]
2023-08-03 17:57:36 -04:00
kurtis schmidt
b11861d6ae Changed SObjectPropertyEntryBox to take a const UClass* instead of UClass*.
#rb ronald.koppers, han.chu

[CL 26721142 by kurtis schmidt in ue5-main branch]
2023-07-31 17:08:01 -04:00
julien stjean
dea50ea3c6 The object path used to set the properties via an asset data in FPropertyHandleObject::SetValue will now use the full path of the class instead of only the name.
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]
2023-07-31 10:03:37 -04:00
marc audy
07d2154e2e Remove ensure as it is firing in -game and -server editor builds
#rnx
[FYI] Patrick.Boutot

[CL 26687272 by marc audy in ue5-main branch]
2023-07-28 16:51:22 -04:00
jordan hoffmann
c2ca810ecc [CISFIX] botched merge was backed out in Dev-FN-26 but the backout got merged into FN-Main when it shouldn't have
returning files to their state in 26659901

[CL 26662683 by jordan hoffmann in ue5-main branch]
2023-07-27 20:40:52 -04:00
jordan hoffmann
2affb22e50 [Backout] - CL26660318
[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]
2023-07-27 19:47:06 -04:00
jordan hoffmann
2a5d313ca4 [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 26659931 by jordan hoffmann in ue5-main branch]
2023-07-27 18:40:07 -04:00
jordan hoffmann
3671549813 [BugFix] False Positive Diffs for subobject pointers
#rb dan.oconnor

[CL 26624314 by jordan hoffmann in ue5-main branch]
2023-07-26 18:02:38 -04:00
jordan hoffmann
6f13ccfe68 [PerfFix] Diff algorithm was constructing widgets unintentionally when attempting to get property handles from the DetailCategoryBuilder
#rb matt.kuhlenschmidt

[CL 26615791 by jordan hoffmann in ue5-main branch]
2023-07-26 14:30:46 -04:00
jordan hoffmann
6cfc0962b2 [CrashFix] SDetailsSplitter::GetHighlightColor causes crash if property is a sub-member of a null object
repro: review 26434801 and click on first entry in defaults diff

#rb dan.oconnor

[CL 26558827 by jordan hoffmann in ue5-main branch]
2023-07-24 18:55:39 -04:00
aditya ravichandran
aef641008a Property Matrix: Fix a bug that stopped search from working in the "Pinned Columns" tab
#jira UE-189605

[CL 26512489 by aditya ravichandran in ue5-main branch]
2023-07-21 11:07:10 -04:00
jordan hoffmann
e30fdfd316 [RegressionFix] ParentClass and ImplementedInterfaces properties aren't diffing in class settings panel
#jira UE-189412
#rb dan.oconnor

[CL 26441430 by jordan hoffmann in ue5-main branch]
2023-07-18 14:34:58 -04:00
jeanluc corenthin
60ed559e1a Fixed crash when a class picker was called in the Dataprep Editor
- 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]
2023-07-18 09:48:18 -04:00
jordan hoffmann
17d4cdea31 [Feature] Data-Only Blueprint merging
#jira UE-189521
#rb dan.oconnor ben.hoffman jodon.karlik

[CL 26352039 by jordan hoffmann in ue5-main branch]
2023-06-30 15:14:19 -04:00
george rolfe
366b184081 [PropertyEditor] Fix for recursive pastability check (ignore expansion states)
#jira UE-189746
#rb karen.jirak

[CL 26277708 by george rolfe in ue5-main branch]
2023-06-27 21:21:29 -04:00
jared therriault
94b8d79624 Object Mixer:
-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]
2023-06-27 19:04:04 -04:00
george rolfe
ee983fd4d5 [PropertyEditor] Category copy/paste fix for blueprint editor
#jira UE-188883
#rb karen.jirak

[CL 26249357 by george rolfe in ue5-main branch]
2023-06-26 19:54:27 -04:00
george rolfe
5163fba7aa [PropertyEditor] FDetailTreeNode::GetChildren bInIgnoreVisibility also ignores Advanced visibility (so all child nodes are retrieved regardless of advanced expansion state)
#jira UE-189614
#rb karen.jirak

[CL 26249353 by george rolfe in ue5-main branch]
2023-06-26 19:54:22 -04:00
aditya ravichandran
92d124049f Property Matrix: Permission Lists are now checked for every object that is being edited instead of just the most common base class, and we don't create widgets for cells that don't pass the permission list
#rb Jason.Stasik

[CL 26103881 by aditya ravichandran in ue5-main branch]
2023-06-19 16:26:31 -04:00