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]
[FYI] Arciel.Rekman
Original CL Desc
-----------------------------------------------------------------
Fix inability to cook spline meshes by a cooked cooker.
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.
#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher
[CL 30847941 by sean boocock in ue5-main branch]
- Created CVD Macros to trace the three scene query types we have in all their modes
- Create CVD data wrappers for scene queries related data
- Added support to debug draw implicit objects in CVD directly (without creating a mesh)
- Created a new Scene Query Data inspector. This is a custom details panel which will show the data for any selected query in the viewport
#jira UE-193754, UE-203452, UE-203451, UE-193755
#rb Benn.Gallagher
[CL 30821555 by sergio gardeazabal 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.
#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher
[CL 30812215 by arciel rekman in ue5-main branch]
- add debug draw to visualize sleep state
- implement SleepFamily system that was missing from Chaos (SleepThesholdMultiplier)
- SetV and SetW now wakes particles
- reduced default velocity smoothing used by sleep thresholds
- fix smoothed velocity for particles in awake islands (minor issue that made it slightly harder to go to sleep)
- don't use smoothed velocity for floating particles
- system top alloe reduced sleep thresholds for floating particles (cvar controlled, disable dby default)
#rb benn.gallagher
[CL 30608421 by chris caulfield in ue5-main branch]
This reduces memory allocations/deallocations done by that array, which can add up when a lot of calls are made.
[REVIEW] michael.bao
[CL 28947240 by sergio gardeazabal in ue5-main branch]
- remove the now-superfluous on/off flag
This connects FBodyInstance::MaxDepenetrationVelocity (previously unused in Chaos) to InitialOverlapDepenetrationVelocity on rigid particles.
#rb benn.gallagher
[CL 28823891 by chris caulfield in ue5-main branch]
Set the kinematic target in SetGlobalPose so that this is a teleport and velocity reset for kinematics as intended (if a teleport is not desired, the user should be calling SetKinematicTarget, not SetGlobalPose). Previously there could be problems with interpolation in async physics.
#jira UE-196442
#rb cedric.caillaud
[CL 28665908 by chris caulfield in ue5-main branch]
- Zero length sweeps will now return correct normals and hit positions
- Overlaps can now return hit positions, and the normals will be in global space for all shape types
#rb Benn.Gallagher
[FYI] Tom.waterson
#jira UE-191196
[REVIEW] [at]Benn.Gallagher
[CL 26811848 by jaco vandyk in ue5-main branch]