Пример #1
0
 // Update is called once per frame
 void Update()
 {
     if (refresh)
     {
         refresh = false;
         SixensePlugin.sixenseGetHemisphereTrackingMode(controller, ref stateHemisphereTrackingMode);
         SixensePlugin.sixenseGetHighPriorityBindingEnabled(ref highPriotiyuHemisphere);
         SixensePlugin.sixenseGetFilterEnabled(ref filterActivated);
         SixensePlugin.sixenseGetFilterParams(ref filterNearRange, ref filterNearVal, ref filterFarRang, ref filterFarVal);
         SixensePlugin.sixenseGetBaseColor(ref color[0], ref color[1], ref color[2]);
     }
     if (update)
     {
         update = false;
         SixensePlugin.sixenseSetHemisphereTrackingMode(controller, stateHemisphereTrackingMode);
         SixensePlugin.sixenseSetHighPriorityBindingEnabled(highPriotiyuHemisphere);
         SixensePlugin.sixenseSetFilterEnabled(filterActivated);
         SixensePlugin.sixenseSetFilterParams(filterNearRange, filterNearVal, filterFarRang, filterFarVal);
         SixensePlugin.sixenseSetBaseColor(color[0], color[1], color[2]);
     }
     if (autoEnable)
     {
         autoEnable = false;
         SixensePlugin.sixenseAutoEnableHemisphereTracking(controller);
     }
 }
Пример #2
0
    /// <summary>
    /// Manually rebinds the hands. HACKY
    /// </summary>
    public void RebindHands()
    {
        SixensePlugin.sixenseAutoEnableHemisphereTracking(0);
        SixensePlugin.sixenseAutoEnableHemisphereTracking(1);
        //SixensePlugin.sixenseSetHemisphereTrackingMode(0,1);
        //SixensePlugin.sixenseSetHemisphereTrackingMode(1,1);

        SixensePlugin.sixenseSetHighPriorityBindingEnabled(1);

        m_ControllerManagerState = ControllerManagerState.NONE;

        Controllers[0].SetEnabled(true);
        Controllers[1].SetEnabled(true);
    }
Пример #3
0
    /// <summary>
    /// Update the static controller data once per frame.
    /// </summary>
    void Update()
    {
        // update controller data
        uint numControllersBound   = 0;
        uint numControllersEnabled = 0;

        SixensePlugin.sixenseControllerData cd = new SixensePlugin.sixenseControllerData();
        for (int i = 0; i < MAX_CONTROLLERS; i++)
        {
            if (m_Controllers[i] != null)
            {
                if (SixensePlugin.sixenseIsControllerEnabled(i) == 1)
                {
                    SixensePlugin.sixenseGetNewestData(i, ref cd);
                    m_Controllers[i].Update(ref cd);
                    m_Controllers[i].SetEnabled(true);
                    numControllersEnabled++;
                    if (ControllerManagerEnabled && (SixenseInput.Controllers[i].Hand != SixenseHands.UNKNOWN))
                    {
                        numControllersBound++;
                    }
                }
                else
                {
                    m_Controllers[i].SetEnabled(false);
                }
            }
        }

        // update controller manager
        if (ControllerManagerEnabled)
        {
            if (numControllersEnabled < 2)
            {
                m_ControllerManagerState = ControllerManagerState.NONE;
            }

            switch (m_ControllerManagerState)
            {
            case ControllerManagerState.NONE:
            {
                if (IsBaseConnected(0) && (numControllersEnabled > 1))
                {
                    if (numControllersBound == 0)
                    {
                        m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_ONE;
                    }
                    else if (numControllersBound == 1)
                    {
                        m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                    }
                }
            }
            break;

            case ControllerManagerState.BIND_CONTROLLER_ONE:
            {
                if (numControllersBound > 0)
                {
                    m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                }
                else
                {
                    for (int i = 0; i < MAX_CONTROLLERS; i++)
                    {
                        if ((m_Controllers[i] != null) && Controllers[i].GetButtonDown(SixenseButtons.TRIGGER) && (Controllers[i].Hand == SixenseHands.UNKNOWN))
                        {
                            Controllers[i].HandBind = SixenseHands.LEFT;
                            SixensePlugin.sixenseAutoEnableHemisphereTracking(i);
                            m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                            break;
                        }
                    }
                }
            }
            break;

            case ControllerManagerState.BIND_CONTROLLER_TWO:
            {
                if (numControllersBound > 1)
                {
                    m_ControllerManagerState = ControllerManagerState.NONE;
                }
                else
                {
                    for (int i = 0; i < MAX_CONTROLLERS; i++)
                    {
                        if ((m_Controllers[i] != null) && Controllers[i].GetButtonDown(SixenseButtons.TRIGGER) && (Controllers[i].Hand == SixenseHands.UNKNOWN))
                        {
                            Controllers[i].HandBind = SixenseHands.RIGHT;
                            SixensePlugin.sixenseAutoEnableHemisphereTracking(i);
                            m_ControllerManagerState = ControllerManagerState.NONE;
                            break;
                        }
                    }
                }
            }
            break;

            default:
                break;
            }
        }
    }
Пример #4
0
        public static void Update()
        {
            if (dllPresent)
            {
                //present = Available();

                uint numControllersBound               = 0;
                uint numControllersEnabled             = 0;
                SixensePlugin.sixenseControllerData cd = new SixensePlugin.sixenseControllerData();
                for (int i = 0; i < MAX_CONTROLLERS; i++)
                {
                    if (m_Controllers[i] != null)
                    {
                        if (SixensePlugin.sixenseIsControllerEnabled(i) == 1)
                        {
                            status = Status.Tracking;
                            SixensePlugin.sixenseGetNewestData(i, ref cd);
                            m_Controllers[i].Update(ref cd);
                            m_Controllers[i].m_Enabled = true;
                            numControllersEnabled++;
                            if (ControllerManagerEnabled && (m_Controllers[i].bodySide != Controller.BodySide.Unknown))
                            {
                                numControllersBound++;
                            }
                        }
                        else
                        {
                            m_Controllers[i].m_Enabled = false;
                        }
                    }
                }

                if (ControllerManagerEnabled)
                {
                    if (numControllersEnabled < 2)
                    {
                        m_ControllerManagerState = ControllerManagerState.NONE;
                    }

                    switch (m_ControllerManagerState)
                    {
                    case ControllerManagerState.NONE:
                        if (SixensePlugin.sixenseIsBaseConnected(0) != 0 && (numControllersEnabled > 1))
                        {
                            if (numControllersBound == 0)
                            {
                                m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_ONE;
                            }
                            else if (numControllersBound == 1)
                            {
                                m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                            }
                        }
                        break;

                    case ControllerManagerState.BIND_CONTROLLER_ONE:
                        if (numControllersBound > 0)
                        {
                            m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                        }
                        else
                        {
                            for (int i = 0; i < MAX_CONTROLLERS; i++)
                            {
                                if ((m_Controllers[i] != null) && m_Controllers[i].GetButtonDown(HydraButtons.TRIGGER) && (m_Controllers[i].bodySide == Controller.BodySide.Unknown))
                                {
                                    m_Controllers[i].m_HandBind = Controller.BodySide.Left;
                                    SixensePlugin.sixenseAutoEnableHemisphereTracking(i);
                                    m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
                                    break;
                                }
                            }
                        }
                        break;

                    case ControllerManagerState.BIND_CONTROLLER_TWO:
                        if (numControllersBound > 1)
                        {
                            m_ControllerManagerState = ControllerManagerState.NONE;
                        }
                        else
                        {
                            for (int i = 0; i < MAX_CONTROLLERS; i++)
                            {
                                if ((m_Controllers[i] != null) && m_Controllers[i].GetButtonDown(HydraButtons.TRIGGER) && (m_Controllers[i].bodySide == Controller.BodySide.Unknown))
                                {
                                    m_Controllers[i].m_HandBind = Controller.BodySide.Right;
                                    SixensePlugin.sixenseAutoEnableHemisphereTracking(i);
                                    m_ControllerManagerState = ControllerManagerState.NONE;
                                    break;
                                }
                            }
                        }
                        break;
                    }
                }
            }
            leftController  = GetController(true);
            rightController = GetController(false);
        }