Description

This is affected by loading order.

In the case, display mesh was loaded firstly and try to build collision mesh form complex collision mesh asset. But the collision mesh didn't finished to make RenderData.

UStaticMesh::ContainsPhysicsTriMeshData returns nullptr, so the display mesh lose the collision mesh.

To Call ConditionalPostLoad on the collision mesh before building the collision on the display mesh can fix this issue.

// code placeholder
bool UStaticMesh::ContainsPhysicsTriMeshData(bool bInUseAllTriData) const 
 {
 #if WITH_EDITORONLY_DATA
     if (ComplexCollisionMesh && ComplexCollisionMesh != this)
     {
         ComplexCollisionMesh->ConditionalPostLoad(); // !!! please add this line !!!
         return ComplexCollisionMesh->ContainsPhysicsTriMeshData(bInUseAllTriData);

 

Steps to Reproduce
  1. open attached  [Link Removed] with 4.23
  2. (optional) remove all DDC (in Engine/DerivedDataCache foloder) and launch editor with -ddc=noshared
  3. start PlayInEditor
  4. move forward to hit a wall

Result

Player doesn't hit the wall and does go through the mesh.

 

 

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-88957 in the post.

4
Login to Vote

Fixed
Fix Commit15013109
Main Commit15013109
CreatedFeb 18, 2020
ResolvedJan 7, 2021
UpdatedApr 28, 2021