I encountered similar issues when trying to update the Restitution on the PhysicalMaterial dynamically at runtime.
There is a solution available in code, via the public static FChaosEngineInterface::UpdateMaterial function.
After creating and assigning the PhysMaterialOverride on the BodyInstance, the properties such as Friction and Restitution can be changed and updated like this:
void Example_UpdatePhysicalMaterial(UPrimitiveComponent* BodyComponent, double InFriction, double InRestitution)
{
UPhysicalMaterial* PhysMat = BodyComponent->BodyInstance.GetSimplePhysicalMaterial();
if (PhysMat->Friction != InFriction || PhysMat->Restitution != InRestitution)
{
PhysMat->Friction = InFriction;
PhysMat->Restitution = InRestitution;
FChaosEngineInterface::UpdateMaterial(*PhysMat->MaterialHandle, PhysMat);
}
}
I’m using this method (not the exact code above) and it works.