// 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); } }
/// <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(); } }
/// <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; }
/// <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; }
/// <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); }
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; } }
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; } }
/// <summary> /// Exit sixense when the application quits. /// </summary> void OnApplicationQuit() { SixensePlugin.sixenseExit(); }
/// <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; } } }
/// <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); }
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); }
private static bool Available() { bool baseConnected = SixensePlugin.sixenseIsBaseConnected(0) > 0; return(dllPresent && baseConnected); }
/// <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; } } }
void Quit() { SixensePlugin.sixenseExit(); }
//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; } }