private void CutFinish() { fstate = FingerState.Idle; SliceResult pass = CutCollisionCheck(); StartCoroutine(CutDeliverProcess(pass)); }
void Update() { if (Input.GetMouseButtonDown(0)) { // prepare data var meshFilter = _target.GetComponent <MeshFilter>(); var meshRenderer = _target.GetComponent <MeshRenderer>(); var mesh = meshFilter.mesh; Plane plane = new Plane(Vector3.up, 0); Material[] materials = meshRenderer.sharedMaterials; Material sectionMaterial = new Material(Shader.Find("Diffuse")); var adapter = new BzManualMeshAdapter(mesh.vertices); // slice mesh var meshDissector = new BzMeshDataDissector(mesh, plane, materials, adapter, BzSliceConfiguration.GetDefault()); meshDissector.DefaultSliceMaterial = sectionMaterial; SliceResult sliceResult = meshDissector.Slice(); // apply result back to our object if (sliceResult == SliceResult.Sliced) { var result = meshDissector.SliceResultNeg; meshFilter.mesh = result.GenerateMesh(); meshRenderer.materials = result.Materials; } } }
public void OnSliceReady(Vector3 start, Vector3 end, SliceResult result) { fingerStart = start; fingerEnd = end; sliceResult = result; //TranslateState(gameIdle, sliceState); //return; if (currentState == gameIdle) { TranslateState(gameIdle, sliceState); } else { Debug.LogWarning("Slice ready but Niba will not move, because in state: " + currentState.ToString()); } }
public void OnLevelUnload(SliceResult result) { foreach (Line l in levelLines) { Destroy(l.gameObject); } objContainer.gameObject.SetActive(false); if (result == SliceResult.Pass) { GameManager.Instance.topLevelNum++; if (GameManager.Instance.topLevelNum > GameManager.Total_Level_Num - 1) { GameManager.Instance.topLevelNum--; prefabBundle.Unload(false); UnityEngine.SceneManagement.SceneManager.LoadScene(1, UnityEngine.SceneManagement.LoadSceneMode.Single); } } }
private IEnumerator CutDeliverProcess(SliceResult result) { niba.OnSliceReady(start, end, result); float startWidth = 0.1f; float endWidth = 0.005f; float flashTime = 0.25f; float timer = 0f; while (timer < flashTime) { vl.LineWidth = Mathf.Lerp(startWidth, endWidth, timer / flashTime); vl.LineColor = Color.Lerp(colop1, colop2, timer / flashTime); timer += Time.deltaTime; yield return(null); } yield return(null); ResetLineToInitState(); }