Default objects will not be created if the class is abstract.
#rb Francis.Hurteau
#jira UE-224118
#tests Ran editor, new unit tests
[CL 36747664 by steve robb in 5.5 branch]
Fixed a bug with the property matrix and how it handled pasting text into a textbox for text properties. The text correctly gets pasted and imported now.
#rb: Jamie.Dale
#jira: FORT-736831
#test Got the help of UE QA to verify that the problem was no longer occuring in the paste case for text. THe localization caches are now being correctly populated.
[CL 36165775 by leon huang in 5.5 branch]
#rb Steve.Robb
#jira UE-221511
[RN] UStructs above 16.7mb will trip an ensure in the Editor so that they remain compatible with upcoming changes to Max ElementSize. You can disable the ensure with CVar CoreUObject.EnsureAgainstLargeProperties.
[CL 35434186 by jodon karlik in ue5-main branch]
Engine (array, map, and set add item);
Fixing an issue with the previous TMap and TSet auto increment implementaiton, where if you remove an element in the middle of the array then adding a new entry would incorrectly grab the last index of the container to adjust it. When adding an entry into a container, it will use the first free index (head of the linked list) instead of just adding to the end. Now we'll return the added logical index (meaning, the valid element index and not the internal index) into the container so calling code can get the correct entry if needed.
NOTE: There is still a side effect of how we use the first free index of the container, which is really the last removed element of the container. This means that if we then add an element from an enum, it could be in a position that isn't sequential visually. For example, you add all entries with an enum key from 0-5, those keys will match the container index [0] [1] [2] [3] [4] [5]. You remove index 2 and 4 from the container [0] [1] [3] [5]. Now when you add, it'll add the new element to index 4 but the enum would be 2 [0] [1] [3] [2] [5].
-- Code --
PropertyHandleImpl:
FPropertyValueImpl::AddChild() - Added an int32 return type so we can return the logical index of the added child.
FPropertyHandleSet::AddItem() - Using the child index from AddChild() instead of grabbing the last element on the container.
FPropertyHandleMap::AddItem() - Using the child index from AddChild() instead of grabbing the last element on the container.
[REVIEW] [at]andy.davidson, [at]ronald.koppers
#tests Editor, used test container properties with an enum as the key. Added, removed, and added, to make sure entries were added as expected to the start/end of the container or middle of container.
#rb Andrew.Davidson, logan.buchy, ronald.koppers
[CL 35178527 by aaron eady in ue5-main branch]
Opt-in by creating a UFUNCTION with the signature:
`TArray<FPropertyTextFString> GetOptionsWithStrings()`
or
`TArray<FPropertyDisplayNameFName> GetOptionsWithFNames()`
and in the UPROPERTY macros point to the function
```
UPROPERTY(EditAnywhere, meta=(GetOptions="GetOptionsWithStrings"))
FString/FName MyProperty;
```
or
```
UPROPERTY(EditAnywhere, meta=(GetOptions="GetOptionsWithFNames"))
FString/FName MyProperty2;
```
This should bring GetOptions closer to feature parity with enums. Enums still have one advantage of allowing for tooltips to also be specified.
#rb brooke.hubert
#jira UE-205226
[CL 32950305 by logan buchy in ue5-main branch]
- Adds UI support for [at]editable `type` except for types with a positive type of 'any' (This could be allowed if desired)
- This relies on adding the meta-class for "VerseClassPositiveType" to FPropertyClass's generated from CTypeType
#rb Tom.Noonan
#test SceneGraph tests
[CL 32480874 by jared cotton in ue5-main branch]
- Set/Clear optional calls now properly set their ArrayIndicesPerObject (1/2 of bug)
#rb kurtis.schmidt
#rb maxime.mercier
#tests SceneGraph Tests
[CL 32305203 by jared cotton in ue5-main branch]
[FYI] jared.cotton
Original CL Desc
-----------------------------------------------------------------
FORT-715613 - "Crash on "Set to Value" of Verse-Optional in array (details panel)"
- Set/Clear optional calls now properly set their ArrayIndicesPerObject (1/2 of original bug)
- Switched to using property `FullPathName` instead of just `name` for mapping array indices to accomodate identically named nested-containers (2/2 of original bug)
- ie: `Parameters[MyObject{Parameters[]}]` --> the `inner` parameters array would collide with the `outer` parameters array previously when property `name` was the mapping for array indices
[FYI] thomas.sarkanen
[FYI] karen.jirak
[CL 32145068 by jared cotton in ue5-main branch]
- Set/Clear optional calls now properly set their ArrayIndicesPerObject (1/2 of original bug)
- Switched to using property `FullPathName` instead of just `name` for mapping array indices to accomodate identically named nested-containers (2/2 of original bug)
- ie: `Parameters[MyObject{Parameters[]}]` --> the `inner` parameters array would collide with the `outer` parameters array previously when property `name` was the mapping for array indices
[FYI] thomas.sarkanen
[FYI] karen.jirak
[CL 32134383 by jared cotton in ue5-main branch]
#jira UE-200280
#tests Copy and paste array of structs and array of objects
[FYI] karen.jirak, brooke.hubert
#rnx
[CL 31575684 by charles lefebvre in ue5-main branch]
Engine (map and set add item);
Implementing a way to have the map and set fill in with the next available enum value instead of always doing the default value.
Slack discussion with video: https://epicgames.slack.com/archives/C0447BVGFFZ/p1705510234620249
-- Code --
PropertyHandleImpl:
FPropertyHandleMap::AddItem() - Added a HasKey() lambda. We're then checking if the map property's key is an enum property, if so, we'll loop the enum values to see if the map doesn't already have that enum value as a key. When we find one that isn't in the map, we're adding a child node and then setting the child's key node to be the enum value that is not in the map yet. If the map property's key is not enum then we do the old check for if the default key isn't there.
FPropertyHandleSet::AddItem() - Added a HasElement() lambda. We're then checking if the set property's element is an enum property, if so, we'll loop the enum values to see if the set doesn't already have the enum value as an element. When we find one that isn't in the set, we're adding a child node and then setting the child node to be the enum value that is not in the set yet. If the set property's element is not enum then we do the old check for if the default key isn't there.
UnrealTypes:
FSetProperty::GetElementProperty() - Added this getter to return the ElementProp property.
[REVIEW] [at]guillaume.morreel, [at]matt.stone, [at]karen.jirak, [at]ronald.koppers
#tests PIE, opened a uasset that has a TMap property with enum as the key, added each enum key as I clicked the add item button, changed an entry to something out of order to make sure the add item button would add the next available entry, all the way until it wouldn't add anymore entries because all enum keys were taken. Also tried a TMap property with a gameplaytag as the key to make sure it still worked as expected. Repeated with TSet.
#rb ronald.koppers
[CL 31089421 by aaron eady in ue5-main branch]