void OnCollisionEnter(Collision collision) { if (collision.impulse.sqrMagnitude < MinImpulseToDestroy) { return; } var contact = collision.GetContact(0); var boxCollider = (BoxCollider)contact.thisCollider; var collisionPoint = transform.InverseTransformPoint(contact.point); var colliderType = GetColliderType(boxCollider.size); var collidedVoxelLocalPosition = CalculateCollidedVoxelPosition(colliderType, collisionPoint, boxCollider.size); var collidedVoxelWorldPosition = transform.TransformPoint(collidedVoxelLocalPosition); DeleteCollider(collidedVoxelLocalPosition, (BoxCollider)contact.thisCollider, collision, colliderType); ShipEntity.DeleteVoxel(collidedVoxelWorldPosition); ShipEntity.AddDynamicVoxel(collidedVoxelWorldPosition, collision.relativeVelocity); }