MeshSlicer.cs
namespace Sandbox;
public static class MeshSlicer
{
public static MeshSliceResult Slice( GameObject source, Vector3 worldPosition, Vector3 worldNormal )
{
return Slice( source, worldPosition, worldNormal, MeshSliceRegion.Full, null );
}
public static MeshSliceResult Slice(
GameObject source,
Vector3 worldPosition,
Vector3 worldNormal,
MeshSliceRegion region,
Material crossSectionMaterial = null )
{
if ( source is null )
return null;
var renderer = source.GetComponent<ModelRenderer>( true );
if ( renderer is null )
return null;
return Slice( renderer, worldPosition, worldNormal, region, crossSectionMaterial );
}
public static MeshSliceResult Slice(
ModelRenderer renderer,
Vector3 worldPosition,
Vector3 worldNormal,
MeshSliceRegion region,
Material crossSectionMaterial = null )
{
return MeshSliceRuntime.Slice( renderer, worldPosition, worldNormal, region, crossSectionMaterial );
}
public static GameObject[] SliceAndSpawn(
GameObject source,
Vector3 worldPosition,
Vector3 worldNormal,
MeshSliceRegion region,
Material crossSectionMaterial = null,
bool disableSource = false,
bool autoCopyPhysics = false )
{
var result = Slice( source, worldPosition, worldNormal, region, crossSectionMaterial );
if ( result is null )
return null;
return result.CreateHulls( source, disableSource, autoCopyPhysics );
}
}