public static BlobAssetReference <Collider> CreateTriangle(float3 vertex0, float3 vertex1, float3 vertex2, CollisionFilter?filter = null, Material?material = null) { if (math.any(!math.isfinite(vertex0)) || math.any(!math.isfinite(vertex1)) || math.any(!math.isfinite(vertex2))) { throw new System.ArgumentException("Tried to create triangle collider with nan/inf vertex"); } using (var allocator = new BlobAllocator(-1)) { ref PolygonCollider collider = ref allocator.ConstructRoot <PolygonCollider>(); collider.InitAsTriangle(vertex0, vertex1, vertex2, filter ?? CollisionFilter.Default, material ?? Material.Default); return(allocator.CreateBlobAssetReference <Collider>(Allocator.Persistent)); }
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> CreateTriangle(float3 vertex0, float3 vertex1, float3 vertex2, CollisionFilter filter, Material material) { if (math.any(!math.isfinite(vertex0)) || math.any(!math.isfinite(vertex1)) || math.any(!math.isfinite(vertex2))) { throw new ArgumentException("Tried to create triangle collider with nan/inf vertex"); } var collider = new PolygonCollider(); collider.InitAsTriangle(vertex0, vertex1, vertex2, filter, material); return(BlobAssetReference <Collider> .Create(&collider, UnsafeUtility.SizeOf <PolygonCollider>())); }