Ejemplo n.º 1
0
 void FinalizeVector(object sender, ControllerEventArgs e)
 {
     if (coordType == CoordSystemType.CARTESIAN)
     {
         if (e.isLeft)
         {
             leftActiveVec.CreateInCartesian();
             leftActiveVec = null;
         }
         else
         {
             rightActiveVec.CreateInCartesian();
             rightActiveVec = null;
         }
     }
     else
     {
         if (e.isLeft)
         {
             leftActiveVec.CreateInGeneral();
             leftActiveVec = null;
         }
         else
         {
             rightActiveVec.CreateInGeneral();
             rightActiveVec = null;
         }
     }
 }
Ejemplo n.º 2
0
    public MathBox_Vector CreateVector(Vector3 position)
    {
        MathBox_Vector vector = Instantiate(vectorPrefab);

        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);
        usercreated_list.Add(vector);
        vector.SetPosition(origin.position, position);
        return(vector);
    }
Ejemplo n.º 3
0
    void VectorCross(MathBox_Vector v1, MathBox_Vector v2)
    {
        Vector3 start = origin.position;
        //Vector3 end = Vector3.Cross(v1.vectorInfo, v2.vectorInfo);
        MathBox_Vector vector = Instantiate(vectorPrefab);

        vector.SetVectorType(MathBox_Vector.VectorType.CrossProduct, v1, v2);
        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);
    }
Ejemplo n.º 4
0
 public void SelectVector(MathBox_Vector selected)
 {
     selected.select();
     if (selected_vectors.Contains(selected))
     {
         selected_vectors.Remove(selected);
     }
     else
     {
         selected_vectors.Add(selected);
     }
 }
Ejemplo n.º 5
0
 void ToggleSelection(MathBox_Vector selected)
 {
     selected.select();
     if (selected_vectors.Contains(selected))
     {
         selected_vectors.Remove(selected);
     }
     else
     {
         selected_vectors.Add(selected);
     }
 }
Ejemplo n.º 6
0
 MathBox_Vector LastSelection()
 {
     if (selected_vectors.Count != 0)
     {
         MathBox_Vector last = selected_vectors[selected_vectors.Count - 1];
         selected_vectors.RemoveAt(selected_vectors.Count - 1);
         last.select();
         return(last);
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 7
0
    void CreateVector(object sender, ControllerEventArgs e)
    {
        Transform      tip    = e.controller.GetComponentInChildren <InitAttachment>().tip;
        MathBox_Vector vector = Instantiate(vectorPrefab);

        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);
        usercreated_list.Add(vector);
        vector.SetPosition(origin.position, tip.position);
        if (e.isLeft)
        {
            leftActiveVec = vector;
        }
        else
        {
            rightActiveVec = vector;
        }
    }
Ejemplo n.º 8
0
    void SelectVector(object sender, ControllerEventArgs e)
    {
        Transform tip = e.controller.GetComponent <InitAttachment>().tip;

        foreach (MathBox_Vector v in usercreated_list)
        {
            if ((v.GetEnd - tip.position).magnitude < 1)
            {
                if (e.isLeft)
                {
                    leftActiveVec = v;
                }
                else
                {
                    rightActiveVec = v;
                }
            }
        }
    }
Ejemplo n.º 9
0
 void FinishEditing(object sender, ControllerEventArgs e)
 {
     if (e.isLeft && leftActiveVec == null)
     {
         return;
     }
     if (!e.isLeft && rightActiveVec == null)
     {
         return;
     }
     if (coordType == CoordSystemType.CARTESIAN)
     {
         if (e.isLeft)
         {
             leftActiveVec.FinishEditInCartesian();
             leftActiveVec = null;
         }
         else
         {
             rightActiveVec.FinishEditInCartesian();
             rightActiveVec = null;
         }
     }
     else
     {
         if (e.isLeft)
         {
             leftActiveVec.FinishEditInGeneral();
             leftActiveVec = null;
         }
         else
         {
             rightActiveVec.FinishEditInGeneral();
             rightActiveVec = null;
         }
     }
 }
Ejemplo n.º 10
0
    void VectorAddition(MathBox_Vector v1, MathBox_Vector v2)
    {
        //operand1
        Vector3        start  = v1.vectorInfo;
        MathBox_Vector vector = Instantiate(vectorPrefab);

        vector.SetVectorType(MathBox_Vector.VectorType.Addition_operand1, v1, v2);
        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);

        //operand2
        start  = v2.vectorInfo;
        vector = Instantiate(vectorPrefab);
        vector.SetVectorType(MathBox_Vector.VectorType.Addition_operand2, v1, v2);
        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);

        //result
        start  = origin.position;
        vector = Instantiate(vectorPrefab);
        vector.SetVectorType(MathBox_Vector.VectorType.Addition, v1, v2);
        vector.transform.SetParent(coordSystem, false);
        vector_list.Add(vector);
    }
Ejemplo n.º 11
0
 public void SetVectorType(VectorType type0, MathBox_Vector op1, MathBox_Vector op2)
 {
     type     = type0;
     operand1 = op1;
     operand2 = op2;
 }
Ejemplo n.º 12
0
    void ReadLeftController()
    {
        if (leftController.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad))
        {
            //app.leftMenu.EnableSelector(leftController.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).x * 0.045f,
            //    leftController.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).y * 0.045f);
            app.SetLeftMenuPress(true);
        }
        else if (leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad))
        {
            //app.leftMenu.EnableSelector();
        }
        else if (leftController.GetTouch(SteamVR_Controller.ButtonMask.Touchpad))
        {
            //app.leftMenu.UpdateSelector(leftController.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).x * 0.045f,
            //    leftController.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).y * 0.045f);
        }
        else if (leftController.GetTouchUp(SteamVR_Controller.ButtonMask.Touchpad))
        {
            //app.leftMenu.DisableSelector();
            //app.SetleftMenuPress(false);
        }

        /*
         * // Toggle Coordinate System
         * if(leftController.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad))
         * {
         *  int currType = (int)CoordinateSystemInteraction.coordType;
         *  currType++;
         *  currType = currType % 3;
         *  if (Enum.IsDefined(typeof(CoordinateSystemInteraction.CoordType), currType))
         *  {
         *      CoordinateSystemInteraction.coordType = (CoordinateSystemInteraction.CoordType)currType;
         *  }
         * }
         *
         * // Toggle Interaction Mode
         * if (leftController.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu))
         * {
         *  int currMode = (int)coordSystem.interactionMode;
         *  currMode++;
         *  currMode = currMode % 5;
         *  if(Enum.IsDefined(typeof(CoordinateSystemInteraction.InteractionMode), currMode))
         *  {
         *      coordSystem.interactionMode = (CoordinateSystemInteraction.InteractionMode)currMode;
         *  }
         * }
         */

        // Reposition

        /*
         * if (leftController.GetPressDown(SteamVR_Controller.ButtonMask.Grip))
         * {
         *  currPos = transform.position;
         *  currLeftPos = leftController.transform.pos;
         * }
         * else if (leftController.GetPress(SteamVR_Controller.ButtonMask.Grip))
         * {
         *  Vector3 delta = currLeftPos - leftController.transform.pos;
         *  //Vector3 delta = leftController.transform.pos - currLeftPos;
         *  transform.position = currPos + delta;
         * }
         */

        // Toggle Vector Interactions
        switch (coordSystem.interactionMode)
        {
        case CoordinateSystemInteraction.InteractionMode.Create:
            if (leftActive == null && leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
            {
                leftActive = coordSystem.CreateVector(leftTip.position);
            }
            else if (leftActive != null && leftController.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
            {
                if (CoordinateSystemInteraction.coordType == CoordinateSystemInteraction.CoordType.Cartesian)
                {
                    leftActive.CreateInCartesian();
                }
                else
                {
                    leftActive.CreateInGeneral();
                }
                leftActive = null;
            }
            else if (leftActive != null)
            {
                leftActive.SetPosition(leftActive.GetStart, leftTip.position);
            }
            break;

        case CoordinateSystemInteraction.InteractionMode.Modify:
            if (leftActive == null && leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
            {
                foreach (MathBox_Vector v in coordSystem.usercreated_list)
                {
                    if ((v.GetEnd - leftTip.position).magnitude < 0.5)
                    {
                        leftActive = v;
                        break;
                    }
                }
            }
            else if (leftActive != null && leftController.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
            {
                if (CoordinateSystemInteraction.coordType == CoordinateSystemInteraction.CoordType.Cartesian)
                {
                    leftActive.FinishEditInCartesian();
                }
                else
                {
                    leftActive.FinishEditInGeneral();
                }
                leftActive = null;
            }
            else if (leftActive != null)
            {
                leftActive.SetPosition(leftActive.GetStart, leftTip.position);
            }
            break;

        case CoordinateSystemInteraction.InteractionMode.Operate:
            if (coordSystem.selected_vectors.Count < 2 && leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
            {
                foreach (MathBox_Vector v in coordSystem.usercreated_list)
                {
                    if ((v.GetEnd - leftTip.position).magnitude < 0.5)
                    {
                        coordSystem.SelectVector(v);
                        break;
                    }
                }
            }
            else if (coordSystem.selected_vectors.Count == 2 && leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
            {
                if (coordSystem.opMode == CoordinateSystemInteraction.OperateMode.Addition)
                {
                    coordSystem.AddSelected();
                }
                else if (coordSystem.opMode == CoordinateSystemInteraction.OperateMode.CrossProduct)
                {
                    coordSystem.CrossSelected();
                }
            }
            else if (leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad))
            {
                if (coordSystem.opMode == CoordinateSystemInteraction.OperateMode.Addition)
                {
                    coordSystem.opMode = CoordinateSystemInteraction.OperateMode.CrossProduct;
                }
                else if (coordSystem.opMode == CoordinateSystemInteraction.OperateMode.CrossProduct)
                {
                    coordSystem.opMode = CoordinateSystemInteraction.OperateMode.Addition;
                }
            }
            break;

            /*
             * case CoordinateSystemInteraction.InteractionMode.Function3D:
             * if (leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger) && activeSurface == null)
             * {
             *  activeSurface = coordSystem.CreateSurface();
             * }
             * else if(leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger) && activeSurface != null)
             * {
             *  activeSurface = null;
             *  coordSystem.ClearSurface();
             * }
             * break;
             * case CoordinateSystemInteraction.InteractionMode.Clear:
             * if (leftController.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
             * {
             *  coordSystem.ClearScene();
             * }
             * break;
             */
        }
    }