void FDestructibleMeshEditorViewportClient::Fracture()
{
#if WITH_APEX
	UDestructibleMesh* DestructibleMesh = DestructibleMeshEditorPtr.Pin()->GetDestructibleMesh();
	if (DestructibleMesh != NULL)
	{
		TComponentReregisterContext<USkinnedMeshComponent> ReregisterContext;

		DestructibleMesh->ReleaseResources();
		DestructibleMesh->ReleaseResourcesFence.Wait();

		if (DestructibleMesh->SourceStaticMesh)
		{
			DestructibleMesh->BuildFractureSettingsFromStaticMesh(DestructibleMesh->SourceStaticMesh);
		}
		else if (DestructibleMesh->ApexDestructibleAsset != NULL)
		{
			DestructibleMesh = ImportDestructibleMeshFromApexDestructibleAsset(DestructibleMesh->GetOuter(), *DestructibleMesh->ApexDestructibleAsset, DestructibleMesh->GetFName(), DestructibleMesh->GetFlags(), NULL,
 																			   EDestructibleImportOptions::PreserveSettings);
		}
		
		DestructibleMesh->FractureSettings->CreateVoronoiSitesInRootMesh();
		DestructibleMesh->FractureSettings->VoronoiSplitMesh();
		
		BuildDestructibleMeshFromFractureSettings(*DestructibleMesh, NULL);
	}
	
	DestructibleMeshEditorPtr.Pin()->RefreshTool();
	DestructibleMeshEditorPtr.Pin()->SetCurrentPreviewDepth(0xFFFFFFFF);	// This will get clamped to the max depth
#endif // WITH_APEX
}
void UDestructibleChunkParamsProxy::PostEditChangeProperty( struct FPropertyChangedEvent& PropertyChangedEvent )
{
	check(DestructibleMesh != NULL && DestructibleMesh->FractureSettings != NULL);

	if (DestructibleMesh->FractureSettings->ChunkParameters.Num() > ChunkIndex)
	{
		DestructibleMesh->FractureSettings->ChunkParameters[ChunkIndex] = ChunkParams;
	}

#if WITH_APEX
	BuildDestructibleMeshFromFractureSettings(*DestructibleMesh, NULL);
#endif
	DestructibleMeshEditorPtr.Pin()->RefreshViewport();
}