public static unsafe BlobAssetReference <Collider> CreateTriangle(float3 vertex0, float3 vertex1, float3 vertex2, CollisionFilter filter, Material material) { SafetyChecks.CheckFiniteAndThrow(vertex0, nameof(vertex0)); SafetyChecks.CheckFiniteAndThrow(vertex1, nameof(vertex1)); SafetyChecks.CheckFiniteAndThrow(vertex2, nameof(vertex2)); var collider = new PolygonCollider(); collider.InitAsTriangle(vertex0, vertex1, vertex2, filter, material); return(BlobAssetReference <Collider> .Create(&collider, UnsafeUtility.SizeOf <PolygonCollider>())); }
public static unsafe BlobAssetReference <Collider> CreateQuad(float3 vertex0, float3 vertex1, float3 vertex2, float3 vertex3, CollisionFilter filter, Material material) { SafetyChecks.CheckFiniteAndThrow(vertex0, nameof(vertex0)); SafetyChecks.CheckFiniteAndThrow(vertex1, nameof(vertex1)); SafetyChecks.CheckFiniteAndThrow(vertex2, nameof(vertex2)); SafetyChecks.CheckFiniteAndThrow(vertex3, nameof(vertex3)); SafetyChecks.CheckCoplanarAndThrow(vertex0, vertex1, vertex2, vertex3, nameof(vertex3)); PolygonCollider collider = default; collider.InitAsQuad(vertex0, vertex1, vertex2, vertex3, filter, material); return(BlobAssetReference <Collider> .Create(&collider, UnsafeUtility.SizeOf <PolygonCollider>())); }