EDIT: Scroll to the second post in the thread to the new question
Hi,
i already searched the forum and found some lines of code, but i run into some issues. Here is the error:
The previously scheduled job Jobs:CheckStaticBodyChangesJob reads from the ComponentTypeHandle<Unity.Physics.PhysicsCollider> CheckStaticBodyChangesJob.JobData.PhysicsColliderType. You must call JobHandle.Complete() on the job Jobs:CheckStaticBodyChangesJob, before you can write to the ComponentTypeHandle<Unity.Physics.PhysicsCollider> safely.
I already “Run()” my code so i thought this would introduce a sync point and iam done with it, but apparently this is not enough
[UpdateInGroup(typeof(SimulationSystemGroup), OrderLast = true)]
public class Bla: SystemBase
private const uint CollideWithEverything = ~ 0u;
private const uint IgnoreAntiCollisionBlock = ~ 1u << 3;
protected override void OnStartRunning()
{
Entities.ForEach((ref PhysicsCollider physicsCollider) =>
{
var collisionFilter = physicsCollider.GetCollisionFilter();
collisionFilter.CollidesWith = IgnoreAntiCollisionBlock;
EntityUtils.SetCollisionFilter(ref physicsCollider, collisionFilter);
})
.Run();
}
protected override void OnStopRunning()
{
Entities.ForEach((ref PhysicsCollider physicsCollider) =>
{
var collisionFilter = physicsCollider.GetCollisionFilter();
collisionFilter.CollidesWith = CollideWithEverything;
EntityUtils.SetCollisionFilter(ref physicsCollider, collisionFilter);
})
.Run();
}
public static CollisionFilter GetCollisionFilter(this ref PhysicsCollider collider)
{
var filter = CollisionFilter.Default;
unsafe
{
var colliderPtr = (ConvexCollider*) collider.ColliderPtr;
filter = colliderPtr->Filter;
}
return filter;
}
public static void SetCollisionFilter(ref PhysicsCollider collider, CollisionFilter newFilter)
{
unsafe
{
var colliderPtr = (ConvexCollider*) collider.ColliderPtr;
colliderPtr->Filter = newFilter;
}
}