Esempio n. 1
0
    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>();
        }
    }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
    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);
        }
    }
Esempio n. 4
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]);
            }
        }
    }
Esempio n. 5
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);
    }