Example #1
0
    private void CutFinish()
    {
        fstate = FingerState.Idle;
        SliceResult pass = CutCollisionCheck();

        StartCoroutine(CutDeliverProcess(pass));
    }
Example #2
0
        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;
                }
            }
        }
Example #3
0
    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());
        }
    }
Example #4
0
    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);
            }
        }
    }
Example #5
0
    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();
    }