A licensee reported that serialization of LevelSequence with StaticMeshActor with default collision for which mesh has NoCollision profile is not deterministic. The issue seems to be in the fact that in the case of default collision StaticMeshComponent loads collision parameters from mesh in UStaticMeshComponent::UpdateCollisionFromMesh method which is called only after mesh is compiled. So if component is being cooked before mesh is compiled then collision parameters are not loaded from mesh resulting in output being indeterministic. He fixed it adding the following piece into UStaticMeshComponent::Serialize before Super::Serialize():
#if WITH_EDITOR
if (Ar.IsCooking() && bUseDefaultCollision)
{
if (UStaticMesh* Mesh = GetStaticMesh())
{
if (Mesh->IsCompiling())
{
FStaticMeshCompilingManager::Get().FinishCompilation({ Mesh });
}
}
UpdateCollisionFromStaticMesh();
}
#endif
This appears for the fine as a local fix (the licensee is on 5.5) but Claude found some potential problems if we apply this as is for future release. See the attached analysis file.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-380866 in the post.