private void Move() { Vector3 nowPosition = base.oculusTouch.GetPositionR(); if (base.oculusTouch.GetButtonDown(this.move)) { for (int i = 0; i < base.curves.Count; i++) { if (HandCurve.Distance(base.curves[i].curve.GetPoints(), nowPosition).Item2 < HandCurve.collision) { this.movingCurves.Add(i); } } } foreach (int i in this.movingCurves) { base.curves[i].Move(); } if (base.oculusTouch.GetButtonUp(this.move)) { this.movingCurves = new List <int>(); } }
public Knot( ClosedCurve curve, OculusTouch oculusTouch, float distanceThreshold = -1, List <Curve>?collisionCurves = null, LogicalButton?buttonA = null, LogicalButton?buttonB = null, LogicalButton?buttonC = null, LogicalButton?buttonD = null, Material?curveMaterial = null, Material?pullableCurveMaterial = null, Material?pointMaterial = null ) { buttonA = buttonA ?? LogicalOVRInput.RawButton.A; buttonB = buttonB ?? LogicalOVRInput.RawButton.B; buttonC = buttonC ?? LogicalOVRInput.RawButton.RIndexTrigger; buttonD = buttonD ?? LogicalOVRInput.RawButton.RHandTrigger; int count = curve.GetPoints().Count; (int first, int second)chosenPoints = (count / 3, 2 * count / 3); KnotData data = new KnotData(curve, chosenPoints, oculusTouch, distanceThreshold, collisionCurves, buttonA, buttonB, buttonC, buttonD, curveMaterial, pullableCurveMaterial, pointMaterial); this.state = new KnotStateBase(data); HandCurve.SetUp(oculusTouch, drawButton: buttonC, moveButton: buttonD); }
private void Draw() { this.drawingCurve.Draw(); if (base.oculusTouch.GetButtonUp(this.draw)) { if (this.drawingCurve.curve.GetPoints().Count >= 2) { base.curves.Add(this.drawingCurve); } this.drawingCurve = new HandCurve(new OpenCurve(new List <Vector3>()), segment: base.segment); } if (this.drawingCurve.curve.GetPoints().Count >= 2) { Graphics.DrawMesh(this.drawingCurve.mesh, this.drawingCurve.position, this.drawingCurve.rotation, Curve.RainbowCurveMaterial2, 0); } }
public void Combine() { List <HandCurve> selection = base.curves.Where(curve => curve.selected).ToList(); if (selection.Count == 1) { selection[0].curve = selection[0].curve.Close(); } else if (selection.Count == 2 && !selection[0].closed && !selection[1].closed) { List <HandCurve> newCurves = HandCurve.Combine(selection[0], selection[1]); if (newCurves.Count != 0) { base.curves.Remove(selection[0]); base.curves.Remove(selection[1]); base.curves.Add(newCurves[0]); } } }
public BasicDeformation(OculusTouch oculusTouch, ContextMenu.ContextMenu contextMenu, DataHandler dataHandler, List <HandCurve> curves, LogicalButton changeState = null, LogicalButton draw = null, LogicalButton move = null, LogicalButton select = null, LogicalButton cut = null, LogicalButton comfirm = null) : base(oculusTouch, contextMenu, dataHandler, curves) { base.NumberOfUnselectableItems = 9; this.preCurves = base.curves; this.drawingCurve = new HandCurve(new OpenCurve(new List <Vector3>()), segment: this.segment); this.movingCurves = new List <int>(); if (draw != null) { this.draw = draw; } else { this.draw = LogicalOVRInput.RawButton.RIndexTrigger; } if (move != null) { this.move = move; } else { this.move = LogicalOVRInput.RawButton.RHandTrigger; } if (select != null) { this.select = select; } else { this.select = LogicalOVRInput.RawButton.A; } if (cut != null) { this.cut = cut; } else { this.cut = LogicalOVRInput.RawButton.B; } if (comfirm != null) { this.comfirm = comfirm; } else { this.comfirm = LogicalOVRInput.RawButton.X; } HandCurve.SetUp(base.oculusTouch, this.draw, this.move); }