- Adds VConstrainedInt and VConstrainedFloat
- Updates CIntType to use `struct Constraint : public TOptional<int64_t>` to allow for unbounded ints
- Did not implement logic supporting use of unbounded ints within the Solaris library... this is just for VM support atm
- Changed VInt to derive from VValue to support using it with TWriteBarrier
#rb russell.johnston, Tim.Smith
[FYI] Won.Chun (for the VerseJsonInterfaceGen.cpp change's for CIntCype)
[CL 33269805 by jared cotton in ue5-main branch]
UObjects can declare a transitiveBuildDependency for their package on another package. Only used in Incremental cooks, not used in legacy iterative cooks. If the target package of a TransitiveBuildDependency is invalidated by any of its dependencies, the source package is also invalidated. This is the same behavior that all package dependencies have in legacy iterative cooks, but in incremental cook the behavior of a package dependency is that only the direct holder of the dependency is invalidated. TransitiveBuildDependencies add the capability to have in incremental cooks that transitive invalidation from legacy iterative cooks.
The first use case is UMaterialInstanceConstant, which needs to be invalidated if any of the UFunction shader files used by its UMaterial are modified.
#jira UE-203846
#rnx
#rb Zousar.Shaker
[CL 33196917 by matt peters in ue5-main branch]
Unless moving a CDO or moving to the transient package, an object moving out of it's package will have it's linker nulled but not reset.
#jira UE-211383
#rb Francis.Hurteau
[FYI] Francis.Hurteau
[CL 33136565 by kevin macaulayvacher in ue5-main branch]
Add new required FProperty methods HasIntrusiveUnsetOptionalState, InitializeOptionalIntrusive, IsOptionalSetIntrusive, ClearOptionalIntrusive.
Implement specific handling for not-null object pointers.
Defer to template function ::HasIntrusiveUnsetOptionalSate<T> for native struct types and types using cpp type fundamentals.
#rb Andrew.Scheidecker, Johan.Torp
[CL 33117302 by robert millar in ue5-main branch]
We need to refresh the package localization cache for the GFP after the asset registry data has loaded, as we need the asset registry data to correctly build the package localization cache
#rb Justin.Marcus, Rex.Hill
[CL 32981582 by jamie dale 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]
- Unlimited breadth checkbox is removed as suggested in Jira comments.
- Max slider is set to 1000 to match max allowed value.
- The bLimitSearchBreadth bool UPROPERTY of UReferenceViewerSettings now marked as deprecated in config.
- SReferenceViewer::RefilterGraph() now executing on a Tick, only if not already executing. This helps when scrubbing breadth slider in reference viewer for classes with a huge graph (see FortMiniMapIndicator mentioned in this Jira)
- Added slow task Dialog, so that users have feedback while graph is being created for assets/classes with many references
#jira UE-206322
#rb brooke.hubert
[FYI] ben.zeigler
[CL 32932895 by dario mazzanti in ue5-main branch]
This also allows SetPropertyActiveOverride macros to be called outside of PreReplicate to move towards proper push model.
Removed some old deprecated code
#rb Peter.Engstrom
[CL 32891697 by mattias hornlund in ue5-main branch]
#rb Russell.Johnston Tim.Smith
This patch implements deep mutability in the new VM. To do this, I implemented the following:
- Renamed IndexSet to CallSet for name parity with call.
- Made it so we can freeze and melt structs. This wasn't implemented before. To melt a struct, we create a new emergent type where all fields live in the object itself. The melted struct will use this emergent type. We also cache this resulting emergent type on the source emergent type so that freezing all structs with emergent type E1 always produce and object with emergent type E2.
- Emit freeze/melt inside the bytecode generator at the right times. This patch emits freeze/melt unoptimally. We'll need to do FoX in the future to get better perf.
- We pattern match against the AST to match the section of AST that corresponds to a successive list of accesses that are all part of the same deep mutation. We use this to drive codegen for deep mutability.
- Refactor our intrinsics so the code for `set ... = ` can be shared with things like `set ... +=`.
[CL 32869234 by saam barati in ue5-main branch]
- Changed return values of Melt/Freeze to VValue
- If Melt returns a placeholder, it is treated as FOpResult::Block is and we suspend on it
- Removed deep-copy of VMap keys on Melt/Freeze as they are not mutable.
[CL 32868743 by jared cotton in ue5-main branch]
[CrashFix] Array properties aren't idempotent when override serialization is enabled so we need to avoid deserializing them twice during IDO generation. This change will skip any non-loose properties during the Preload pass so that only the loose properties are deserialized, then the non-loose ones will get set during the CopyTaggedProperties pass
#rb Devin.Doucette
[CL 32867663 by jordan hoffmann in ue5-main branch]
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
Prevent clang analysis warnings for uninitialized data from FArchive derived readers
#rnx
[CL 32857977 by joe kirchoff in ue5-main branch]