Ejemplo n.º 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);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Initialize the sixense driver and allocate the controllers.
 /// </summary>
 void Start()
 {
     SixensePlugin.sixenseInit();
     for (int i = 0; i < MAX_CONTROLLERS; i++)
     {
         m_Controllers[i] = new Controller();
     }
 }
Ejemplo n.º 3
0
    /// <summary>
    /// Initialize the sixense driver and allocate the controllers.
    /// </summary>
    void Start()
    {
        SixensePlugin.sixenseInit();

        for (int i = 0; i < MAX_CONTROLLERS; i++)
        {
            m_Controllers[i] = new Controller();
        }

        // don't let the mobile device sleep
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }
Ejemplo n.º 4
0
    /// <summary>
    /// Initialize the sixense driver and allocate the controllers.
    /// </summary>
    void Awake()
    {
        SixensePlugin.sixenseInit();

        for (int i = 0; i < MAX_CONTROLLERS; i++)
        {
            m_Controllers[i] = new Controller();
        }

        Controllers[0].HandBind = SixenseHands.RIGHT;
        Controllers[1].HandBind = SixenseHands.LEFT;
    }
Ejemplo n.º 5
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);
    }
Ejemplo n.º 6
0
        public static void Start()
        {
            status = Status.Unavailable;

            SixensePlugin.sixenseInit();
            for (int i = 0; i < MAX_CONTROLLERS; i++)
            {
                m_Controllers[i] = new Controller();
            }
            dllPresent = true;

            started = true;

            bool baseConnected = SixensePlugin.sixenseIsBaseConnected(0) > 0;

            if (dllPresent && baseConnected)
            {
                status = Status.Present;
            }
        }
Ejemplo n.º 7
0
		internal void Update( ref SixensePlugin.sixenseControllerData cd )
		{
			m_Docked = ( cd.is_docked != 0 );
			m_Hand = ( SixenseHands )cd.which_hand;
			m_ButtonsPrevious = m_Buttons;
			m_Buttons = ( SixenseButtons )cd.buttons;
			m_Trigger = cd.trigger;
			m_JoystickX = cd.joystick_x;
			m_JoystickY = cd.joystick_y;
			m_Position.Set( cd.pos[0], cd.pos[1], cd.pos[2] );
			m_Rotation.Set( cd.rot_quat[0], cd.rot_quat[1], cd.rot_quat[2], cd.rot_quat[3] );
			if ( m_Trigger > TriggerButtonThreshold )
			{
				m_Buttons |= SixenseButtons.TRIGGER;
			}
		}
Ejemplo n.º 8
0
 /// <summary>
 /// Exit sixense when the application quits.
 /// </summary>
 void OnApplicationQuit()
 {
     SixensePlugin.sixenseExit();
 }
Ejemplo n.º 9
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;
            }
        }
    }
Ejemplo n.º 10
0
 /// <summary>
 /// Returns true if the base for zero-based index i is connected.
 /// </summary>
 public static bool IsBaseConnected(int i)
 {
     return(SixensePlugin.sixenseIsBaseConnected(i) != 0);
 }
Ejemplo n.º 11
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);
        }
Ejemplo n.º 12
0
        private static bool Available()
        {
            bool baseConnected = SixensePlugin.sixenseIsBaseConnected(0) > 0;

            return(dllPresent && baseConnected);
        }
Ejemplo n.º 13
0
    /// <summary>
    /// Update the static controller data once per frame.
    /// </summary>
    void Update()
    {
        if (toggleRebind)
        {
            toggleRebind = false;
            RebindHands();
        }

        // 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:
            {
                m_ControllerManagerState = ControllerManagerState.BIND_CONTROLLER_TWO;
            }
            break;

            case ControllerManagerState.BIND_CONTROLLER_TWO:
            {
                if (numControllersBound > 1)
                {
                    m_ControllerManagerState = ControllerManagerState.NONE;
                }
                else
                {
                    //RebindHands();
                    for (int i = 0; i < MAX_CONTROLLERS; i++)
                    {
                        if ((m_Controllers[i] != null) && Input.GetKeyDown(KeyCode.P) && (Controllers[i].Hand == SixenseHands.UNKNOWN))
                        {
                            //	if ( ( m_Controllers[i] != null ) && Controllers[i].GetButtonDown( SixenseButtons.START ) && ( Controllers[i].Hand == SixenseHands.UNKNOWN ) ){
                            //		//Hardcoded binding redirct
                            //		RebindHands();
                        }
                    }
                }
            }
            break;

            default:
                break;
            }
        }
    }
Ejemplo n.º 14
0
 void Quit()
 {
     SixensePlugin.sixenseExit();
 }
Ejemplo n.º 15
0
        //ENDOF LUKA CODE
        internal void Update( ref SixensePlugin.sixenseControllerData cd )
        {
            m_Docked = ( cd.is_docked != 0 );
            m_Hand = ( SixenseHands )cd.which_hand;
            m_ButtonsPrevious = m_Buttons;
            m_Buttons = ( SixenseButtons )cd.buttons;
            m_Trigger = cd.trigger;
            m_JoystickX = cd.joystick_x;
            m_JoystickY = cd.joystick_y;

            //LUKA CODE
            if (recording && !startedRec) {
                StartRecording ();
            } else if (recording && startedRec && Time.time>=finishRecTime) {
                StopRecording ();
            }
            Vector3 rawPos = new Vector3(cd.pos[0], cd.pos[1], cd.pos[2] );
            for(int i =0; i<kStates.Length; i++){
                kStates[i].kalman_update(rawPos[i]);
            }

            Vector3 filteredPos = new Vector3 (kStates [0].x, kStates [1].x, kStates [2].x);
            if (recording && startedRec) {
                tw.WriteLine(rawPos.x+" "+rawPos.y+" "+rawPos.z);
                twFiltered.WriteLine(filteredPos.x+" "+filteredPos.y+" "+filteredPos.z);
            }
            if (useKalman) {
                m_Position.Set (filteredPos.x, filteredPos.y, filteredPos.z);
            } else {
                m_Position.Set (rawPos.x, rawPos.y, rawPos.z);
            }

            Quaternion rot = new Quaternion (cd.rot_quat [0], cd.rot_quat [1], cd.rot_quat [2], cd.rot_quat [3]);
            rot = rot * Quaternion.Euler (new Vector3 (225, 0, 0));

            //m_Rotation.Set( rot[0], rot[1], rot[2], rot[3] );
            //ENDOF LUKA CODE

            //m_Position.Set (cd.pos [0], cd.pos [1], cd.pos [2]);
            m_Rotation.Set( cd.rot_quat[0], cd.rot_quat[1], cd.rot_quat[2], cd.rot_quat[3] );
            if ( m_Trigger > TriggerButtonThreshold )
            {
                m_Buttons |= SixenseButtons.TRIGGER;
            }
        }