Change consist of only forward declaration and additional includes
#preflight 63789c1de30d438849c48188
#rb none
[CL 23218412 by henrik karlsson in ue5-main branch]
Made FProperty::ShouldSerializeValue() easier to debug for why a property is skipped.
#rb robert.manuszewski
#jira UE-170259
#preflight 6372e660b663683828915ccd
[CL 23153394 by steve robb in ue5-main branch]
* Adding forward declarations
* Adding "inline" in front of const/constexpr variables in headers
* Adding includes
* A few moves of ctor/dtor to cpp file
#preflight 6372b3ac0c74adb48b49f313
#rb none
[CL 23130896 by henrik karlsson in ue5-main branch]
#jira UE-162160 #jira UE-142887 #rb ben.zeigler #rb benjamin.fox
FFieldPathProperty applies redirects on ImportText_Internal, automatically redirecting FFieldPath saved in string format for blueprint graph pins.
FGameplayAttribute applies redirects after deserializing unredirected value and fixes up derived properties, for UObject based assets with FGameplayAttribute properties.
UAttributeSet subclass renaming and adding ClassRedirect works now. Previously, FGameplayAttribute pins would show correct value in blueprint graphs but use incorrect value at runtime.
FGameplayAttribute renaming and adding PropertyRedirect works now. Previously, FGameplayAttribute fields in blueprint assets would break (null out), in addition to blueprint graphs using undirected value at runtime.
#preflight 636e638e8f4cb2e4dcf00c05
[CL 23098214 by zhikang shao in ue5-main branch]
Takeaways. Try to use "friend" on functions/operators that are frequently overloaded EXCEPT if they are in a templated type that is frequently instantiated. So do not put friends in TMap, TSet, TObjectPtr etc, this will slow down compile times. There is a break-even somewhere and hard to tell where it is but taking a class that is templatized on character type probably don't matter either way and then it is nicer to use a friend since that simplies error messages when compiler can't resolve functions/operators.
If it is possible to use member functions instead of friend that is the best option in terms of compile time performance. With c++20 you only have to write operator==(Foo, Bar) and the compiler will automatically provide operator==(Bar, Foo), operator!=(Foo, Bar) and operator!=(Bar, Foo).
Changes in this changelist involes
* Making operator<< friends in non-template types and not friends in template types
* Making operator==/!= members where possible and if not possible moved out if type is a frequently instantiated templated type.
#preflight 636970f5376a9cd6a80da54a
#rb steve.robb
[CL 23038965 by henrik karlsson in ue5-main branch]
Disallow TObjectPtr use on complete non-UObject derived types.
#rb devin.doucette
#preflight 63633a910c2e7c8f91d2e4e9
[CL 22966926 by Zousar Shaker in ue5-main branch]
Moved GetTypeHash function to be hidden friend instead of put directly in global namespace.
Note that the function/operator needs to be fully inlined in the type or placed in the cpp. If the function is added as friend but then implemented outside the type then hidden friend optimization won't work.
This should improve compile time somewhat according to msvc devs.
#rb Steve.Robb
#preflight 6360b7052b5338aceb26471b
[CL 22889837 by henrik karlsson in ue5-main branch]
[FYI] Robert.Manuszewski
Original CL Desc
-----------------------------------------------------------------
Adding FPackageName::GetContentPathForPackageRoot to be able to get the filesystem path (e.g. D:/Project/Engine/Content) of a given package root (e.g. /Engine/)
#rb Steve.Robb
#preflight 6360c64663608aee36d1a954
[CL 22888588 by edwin maynard in ue5-main branch]