Exemple #1
0
        public IKnotState?Update()
        {
            int ind1         = KnotStateChoose1.FindClosestPoint(this.data.oculusTouch, this.data.curve);
            var chosenPoints = new List <Vector3>()
            {
                this.data.curve.GetPoints()[ind1]
            };

            this.visiblePoints.SetPoints(chosenPoints);
            this.visiblePoints.UpdateMesh();
            Mesh pointMesh = this.visiblePoints.GetMesh();

            Graphics.DrawMesh(this.knotMesh, Vector3.zero, Quaternion.identity, this.data.curveMaterial, 0);
            Graphics.DrawMesh(pointMesh, Vector3.zero, Quaternion.identity, this.data.pointMaterial, 0);

            if (this.data.oculusTouch.GetButtonDown(this.data.buttonA))
            {
                return(new KnotStateChoose2(this.data, ind1));
            }
            else if (this.data.oculusTouch.GetButtonDown(this.data.buttonB))
            {
                return(new KnotStateBase(this.data));
            }

            return(null);
        }
        public IKnotState Update()
        {
            int ind2         = KnotStateChoose1.FindClosestPoint(this.data.oculusTouch, this.data.points);
            var chosenPoints = KnotStateChoose2.ChooseShorterPath((this.ind1, ind2), this.data.points.Count);

            this.DrawMesh(chosenPoints);

            if (this.data.oculusTouch.GetButtonDown(this.data.buttonA) && this.ind1 != ind2)
            {
                if (this.ind1 != ind2)
                {
                    this.data.chosenPoints = chosenPoints;
                }
                return(new KnotStateBase(this.data));
            }
            else if (this.data.oculusTouch.GetButtonDown(this.data.buttonB))
            {
                return(new KnotStateBase(this.data));
            }

            return(null);
        }