/// <summary>
    /// Instantiates a new cut slice
    /// </summary>
    /// <param name="data"></param>
    private void InstantiateSlice(RawMeshData data)
    {
        SlicedObject slice = Instantiate(_slicePrefab, transform).GetComponent <SlicedObject>();

        slice.Init(data.MeshTransform, data.ToMesh());
        _objectsOnScene.Add(slice);
    }
    /// <summary>
    /// Spawn a primitive in front of the camera
    /// </summary>
    public void SpawnAPrimitive()
    {
        SlicedObject newSlice = Instantiate(_slicePrefab).GetComponent <SlicedObject>();

        newSlice.transform.position = _spawnPosition.position;
        _objectsOnScene.Add(newSlice);
    }
Exemple #3
0
    /// <summary>
    /// Slices a object into smaller parts
    /// </summary>
    /// <param name="cutterPlane"></param>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static List <RawMeshData> SliceMesh(Plane cutterPlane, SlicedObject obj)
    {
        if (!IsMeshIntersectedByPlane(cutterPlane, obj.Filter.mesh, obj.Graphics.transform, out RawMeshData positive, out RawMeshData negative))
        {
            return(new List <RawMeshData>());
        }

        Cut cut = new Cut(obj.Filter.mesh, positive, negative, cutterPlane);

        return(cut.Meshes);
    }