I think the current build of 4.26 is broken for this particular piece, but I’m not sure where to report an issue / bug, so I’m posting it here.
I have a few Actors in my game that dynamically create a ProceduralMeshComponent (through C++), and can update their meshes as the player sees fit (placing blocks / removing them).
After quite a simple setup, everything seemed to work fine (I recently upgraded my project from 4.25 to 4.26).
I added all the “bCompileChaos = true; bUseChaos = true;” lines in my .cs files (which I also had to add in the 4.26 source .cs files, by the way).
The game compiles and collisions on the model worked fine - in PIE. When I build the project (Dedicated server, and packaged development build) - the collisions are gone! Both server-side and client side, the collisions do not work.
I’ve tried a LOT;
- Using
ProceduralMeshComponent = NewObject<UProceduralMeshComponent>(this, FName(TEXT("VoxelMesh")));
in the OnConstruction or BeginPlay - Using
ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(FName(TEXT("VoxelMesh")));
in the Constructor - Setting
ProceduralMeshComponent->bUseAsyncCooking
to true (I had it on false, because I need them directly + it didn’t seem to work at all on true) - Added
SetActorEnableCollision(true);
in the Actor - Added the following lines:
ProceduralMeshComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
ProceduralMeshComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block);
ProceduralMeshComponent->SetCollisionObjectType(ECollisionChannel::ECC_WorldStatic);
But all to no avail. Collisions were working client- and server side in the PIE, but not in packaged builds.
After 8 hours of compiling, testing, recompiling, repackaging, debugging, and more compiling, I tried switching all the useChaos booleans to false, making the project use PhsyX.
And guess what? It all works again.
This leads me to believe there’s a bug in the implementation of Chaos somewhere in the ProcMeshComponent - but I’m quite the beginner so I’m not sure how to handle this… Hence the question (and for me, the solution), in case anyone runs into it.
Cheers, and happy holidays :+)