Move the existing DeclareCustomVersions function which was declared as a virtual UObject function into a static UObject function using this method.
#rb Steve.Robb
#rnx
#preflight 62827303046b81bf93c15ef2
[CL 20226876 by Matt Peters in ue5-main branch]
Other changes:
- Don't emit an ICE for the binary compatibility test between a literal term type and its associated coerce property when the property's underlying type is not supported; this is an undefined context.
- Include additional context in the error message that's output as a result of encountering an undefined opcode during script execution. Note that the callstack will identify the Blueprint class/function.
#jira UE-144355
#rb Dave.Jones2
#fyi Michael.Noland
#preflight 62559c3fcd5ed4dd0918354d
[CL 19726701 by Phillip Kavan in ue5-main branch]
A couple of issues were occurring with delegate signature fixup:
1. Unlike the UserDefinedPins array, the Pins array may contain subpins from a split struct pin. We need to intentionally skip these pins since they aren't a part of the function signature.
2. The IsValidParameter lambda had incorrect logic for determining an input parameter. The presence of both CPF_OutParm *and* CPF_ConstParm indicate that this parameter is actually an input parameter.
#jira UE-145095
#preflight 62336a9e8e2a84d9bb6bc686
#rb phillip.kavan
#lockdown
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 19423492 in //UE5/Release-5.0/... via CL 19427216
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v930-19419903)
[CL 19429544 by dave jones2 in ue5-main branch]
We need to ensure that literal default values are interpreted as float strings instead of doubles. We've observed that some older Blueprint content might be using exact comparisons with floats. While this is generally frowned upon, some game logic may depend on this behavior. These issues can be difficult to debug if we covertly interpret literal float data as doubles.
As for the fix, anytime we serialize old pin data that represented a single precision float, we set a flag on the type that ensures we parse its default value string as a single precision float. This flag is also serialized, and isn't changed until the user actually changes the current value to something different.
#jira UE-145026
#preflight 622a416b03062eac59dae469
#rb phillip.kavan
#lockdown
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 19339612 in //UE5/Release-5.0/... via CL 19348994
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19349461 by dave jones2 in ue5-main branch]
This is similar to UObject::OnPostCDOCompiled, but doesn't require that you implement the logic on a particular class.
#jira
#preflight 6227b758c653e7ef9f572d0b
#rb Rex.Hill
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 19319787 via CL 19319840 via CL 19320685 via CL 19323486 via CL 19323658
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19348039 by jamie dale in ue5-main branch]
Setters and getters are native functions called by FProperties when setting property values with *_InContainer functions.
Setters and getter function names can be manually specified with Setter = Func and Getter = Func keywords inside of UPROEPRTY macro but they will also be automatically parsed if the name is not explicitly specified if the setter or getter function name matches SetPropertyName and GetPropertyName pattern.
The latter behavior can be disabled in UHT's DefaultEngine.ini by setting AutomaticSettersAndGetters=False.
ImportText and ExportTextItem functions have been deprecated and should be replaced with *_InContainer or *_Direct variants.
#rb Steve.Robb
#preflight 6210a377a83e0bcefd03d9e1
#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 19070318 via CL 19098059 via CL 19104650 via CL 19104661 via CL 19110012
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19147839 by marc audy in ue5-main branch]
Adds a define UE_FNAME_OUTLINE_NUMBER.
Removes of FName, FMinimalName from memory image support. Adds of FMemoryImageName.
Removal of FMinimalName operator<<, all fields made private, size made variable.
All fields of FScriptName made private.
Added console commands for dumping numbered/unnumbered names and stats.
#rb johan.torp
#ROBOMERGE-OWNER: robert.millar
#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 19058026 via CL 19058611 via CL 19058656 via CL 19061727 via CL 19061740 via CL 19064047
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v918-19018356)
[CL 19066701 by robert millar in ue5-main branch]
The implicit cast warnings didn't take into account nodes that aren't compiled, which is effectively commented out Blueprint code. Since cast fixup occurs during compilation, we were reporting false positives.
#jira UE-139626
#rb marc.audy
#preflight 620aaab5067e9bd657b49a73
#lockdown aurel.cordonnier
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 18984199 in //UE5/Release-5.0/... via CL 18985316 via CL 18987590
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)
[CL 18987948 by dave jones2 in ue5-main branch]
Use most up-to-date function's metadata (from skeleton class) rather than the currently-being-compiled reference
#jira UE-140081 - Compiling anim bp causes compile errors on linked layers calling a function in the main anim bp through property access
#rb Jurre.deBaare
#preflight 6203bf13b84bb289770e4b05
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 18917203 in //UE5/Release-5.0/... via CL 18926621 via CL 18927562
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)
[CL 18927611 by thomas sarkanen in ue5-main branch]
No real impact other than to keep cached dependent sets from growing indefinitely even after weakly-referenced assets are destroyed.
#jira None
#rb Dave.Jones2
#preflight 6201a9a36773a36128a9d685
[CL 18896211 by Phillip Kavan in ue5-main branch]
The original ENABLE_BLUEPRINT_REAL_NUMBERS macro was strictly meant for AB testing in the Dev-LWC. Currently, disabling it won't work, and would likely lead to broken behavior. Its presence might incorrectly indicate to licensees that this is an option that can be toggled safely.
#rb marc.audy
#jira UE-140327
#preflight 61fc6449dc0b3ecbecb6f381
#lockdown julien.marchand
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 18864654 in //UE5/Release-5.0/... via CL 18864683 via CL 18864993
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18865002 by dave jones2 in ue5-main branch]
Blueprint real number support.
This change deprecates the use the of "float" and "double" types in Blueprints in favor of a new "real". By default, "real" is back by a double precision floating point number. However, it can be single precision if the number is a native float property or function parameter. This distinction won't be visible to the Blueprint user: in both instances, they'll be represented by "real" pin types. During deserialization, we'll automatically convert Blueprint pin types to use real/doubles, unless they're used to represent native code (including delegate signatures).
One consequence of this change is that we need to perform implicit casts between single and double precision real numbers. During Blueprint compilation, the compiler will detect points in the graph for when either a widening or narrowing conversion needs to occur. Subsequently, the script bytecode will contain a new cast instruction that performs the conversion. This also works on container types, but each entry in the container will have to be converted. This can introduce unwanted overhead for large containers that are frequently passed between Blueprint and native code.
The scope of this change affects Blueprints used by Gameplay, Animation, Control Rig, and UMG.
#rb marc.audy (serialization changes)
#jira UE-116484
#preflight 61f8bdd5a2514ba12ff7bdfc
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 18809077 in //UE5/Release-5.0/... via CL 18809455 via CL 18822548
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18823569 by dave jones2 in ue5-main branch]
#preflight 61eefc77ba69a4fdb220bf23
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 18712765 in //UE5/Release-5.0/... via CL 18712784 via CL 18713147
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18713191 by marc audy in ue5-main branch]
Previously, this only applied to disabled/development-only nodes in an event graph.
#jira UE-135925
#rb Dave.Jones2
#preflight 61e1bbf57f65c8b2dce9f21d
#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 18640337 in //UE5/Release-5.0/... via CL 18640366 via CL 18640384
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)
[CL 18640846 by phillip kavan in ue5-main branch]