Because UniagaradataInterfaceChaosDestruction::HandleTrailingEvents does not respect incoming TrailingEvent data, the debris velocity during chaos cache playback is always evaluated as zero.
The following workaround works but there is no PhysicalMaterial Mask Implementation :
void UNiagaraDataInterfaceChaosDestruction::HandleTrailingEvents(const Chaos::FTrailingEventData& Event)
{
...
#if 0
if (GeometryCollectionComponentsFromBreaking.Num() > 0)
{
TArray<UGeometryCollectionComponent*> ComponentsToRemove;
for (auto& GeometryCollectionComponent : GeometryCollectionComponentsFromBreaking)
{
if (GeometryCollectionComponent)
{
...
}
}
for (UGeometryCollectionComponent* ComponentToRemove : ComponentsToRemove)
{
GeometryCollectionComponentsFromBreaking.Remove(ComponentToRemove);
}
}
#else
for (auto& Data : Event.TrailingData.AllTrailingsArray)
{
if (Data.Velocity.SquaredLength() >= TrailMinSpeedToSpawnSquared)
{
Chaos::FTrailingDataExt TrailingData;
TrailingData.Location = Data.Location;
TrailingData.Velocity = Data.Velocity;
TrailingData.AngularVelocity = Data.AngularVelocity;
TrailingData.Mass = Data.Mass;
TrailingData.BoundingboxVolume = 1000000.f;
TrailingData.BoundingboxExtentMin = 100.f;
TrailingData.BoundingboxExtentMax = 100.f;
TrailingData.SurfaceType = 0;
TrailingEvents.Add(TrailingData);
}
}
#endif
}