/// <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); }
/// <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); }