This adds a CVar (a.Skeleton.AllowIncompatibleSkeletalMeshMerge) to enable the addition of bones into the middle of skeleton hierarchies via import. In general this is not safe to do and will likely result in deformed meshes and corrupt animations. In the case this is being built for, the affected bones are not skinned to any existing meshes, and the number of animations that will also need re-importing is limited.
This splits USkeleton::MergeBonesToBoneTree into two modification passes:
- First, any mesh bones that already dont exist in the skeleton are added
- Second, any bones with differing parents are fixed up
Fixed precision issues with FReferenceSkeleton::SetParent where non-normalized rotations could be generated in the reference pose.
Fixed skeleton replacement not causing a recompression when skeleton bone indices could change (added new model notification).
Also fixed up incorrect error message on reimport of differing hierarchies
#rb benoit.gadreau, Nicholas.Frechette
[CL 30964134 by thomas sarkanen in ue5-main branch]
TPS doesn't need SDK and will be used to get info about the platform
TPC requires SDK
AndroidTP has been converted to the new system
#jira UE-200883
#rb Jack.Porter
[CL 30963885 by florin pascu in ue5-main branch]
causing it to under-estimate memory use in some cases
move GetPowerOfTwoTargetTextureSize to TextureBuildUtilities so it can be shared
fix some comments
#rb Dan.Thompson, fabian.giesen
[CL 30943675 by charles bloom in ue5-main branch]
#rb PJ.Kack
#jira UE-203381
-Some users have reported seeing their long cooks fail due to a machine having an unreliable connection or networkcard. In these cases the network outage can be swiftly fixed but if VA failed to pull a payload before then, the cook will terminate and need to be restarted which can cost a lot of time.
- It was requested that we add an optional way to have the system retry payload pulling when running in unattended mode but also to wait for X time (usually many minutes) before trying again. If it is likely that the connection will be restored within those few minutes then waiting will be much less costly than restarting a cook.
- That payloads can be pulled on many threads at the same time makes the logic a little tricky, so rather than counting how many payloads have failed vs the retry counter we count how many times we've logged a message to the user as this logging is protected by a critical section and acts as a way to "group" together failed pulls that occur around about the same time. We then reset this counter to 0 if we detect a successful pull.
- It is possible that a pull fails because the payload is missing, in which case this logic will probably cause the counter to reset frequently and the error to not become fatal for quite some time (possibly until the cook has almost finished) but it is quite unlikly to occur and due to this I have favored erring towards simple code rather than trying to track individual payload failures vs grouped failures vs successful pulls.
- Note: That when backends fail to pull payloads they generally log errors, which will eventually cause most of our processes to return non zero to indicate failure. VA should not log errors while we are inside of a retry loop and only print out errors when we detect a problem that we cannot solve to avoid this. This is being addressed as it's own work item.
[CL 30925886 by paul chipchase in ue5-main branch]
Removing texture build metadata due to ddc complexities. It will be added to the metadata system in the new build flow SoonTM. Additionally, the alpha information for the source mips is no longer necessary as that is computed elsewhere now.
#rb fabian.giesen
#jira UE-183750
[CL 30894760 by dan thompson in ue5-main branch]
- Callers & Callees: Added "Child Instance Count" column. It shows the total number of timing event instances of the child timers (callers or callees).
- Callers & Callees: Added the number of children nodes to each timer node in the tree.
#jira UE-204580
#rb Catalin.Dragoiu
[CL 30880609 by ionut matasaru in ue5-main branch]
Cooked cooker is a relatively new platform in Unreal that allows producing a cooked editor build and using it to cook new assets (e.g. DLC for the base game). Such cooked cooker build is faster to load than the original editor build that would cook from the source assets, and it can also be more easily deployed to cloud environments.
The problem this fix is solving is as follows:
1) Spline mesh needs collision data from the static mesh it deforms. This collision data is usually derived from its render data.
2) Cooked cooker target platform (see TCookedCookerTargetPlatform) is basically a server build, assets cooked for this platform do not store render data.
3) If a new (uncooked) spline mesh is referencing a static mesh from the base build, it fails to get its collision data because the render data was stripped when producing the cooked version of the base build.
The solution is
- to introduce a new target platform feature that allows to distinguish cooked cooker target platform from other platforms that strip audio-visual data.
- when cooking static meshes for a "cooked cooker" target get a separate copy of the asset's collision data and save it inline in the cooked asset.
- inside the cooked cooker, use this copy as static mesh's collision data instead of trying to derive it from (non-existent at that point) static mesh's render data.
- James Singer reviewed the fixed change.
#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher, James.Singer
[CL 30857184 by arciel rekman in ue5-main branch]
Add a condition to FinishTest to make sure it gets trigger only if the screenshot was taken and compared.
+ move functional test metadata log to when the test is about to run
#jira UE-204671
#rnx
#rb christopher.fiala, rob.huyett, sebastian.lewicki
[CL 30856076 by jerome delattre in ue5-main branch]