Since this issue seems to still be an issue at least with 5.2, figured I’d give this my solution in case anyone else also runs into it.
While disabling and enabling the collision works, that may also break other responses momentarily, so I found this neat little method buried in there.
InstancedStaticMeshComponent* MeshInst;
// ...
for (FBodyInstance* body : MeshInst->InstanceBodies)
{
body->CopyRuntimeBodyInstancePropertiesFrom(&MeshInst->BodyInstance);
}
For a BP you’d have to throw something into a BlueprintFunctionLibrary it seems. Something like this (Unfortunately this still requires a C++ project, not sure how to get it into a BP only project short of modifying the engine itself…):
// .h
// class UMyBlueprintFunctionLibrary : ....
UFUNCTION(BlueprintCallable, Category = "InstancedStaticMesh Utilities")
void CopyCollisionResponses(class UInstancedStaticMeshComponent* Component);
// .cpp
#include "Components/InstancedStaticMeshComponent.h"
void UMyBlueprintFunctionLIbrary::CopyCollisionResponses(UInstancedStaticMeshComponent* Component)
{
for (FBodyInstance* body : Component->InstanceBodies)
{
body->CopyRuntimeBodyInstancePropertiesFrom(&MeshInst->BodyInstance);
}
}
Hope this helps someone