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