public MoveController(int num) { _data = new MoveData(); _dirty = true; gemState = new PSMoveSharpGemState(); sphereState = new PSMoveSharpSphereState(); imageState = new PSMoveSharpImageState(); Connected = false; Num = num; }
public void Update(PSMoveSharpState state) { gemState = state.gemStates[Num]; sphereState = state.sphereStates[Num]; imageState = state.imageStates[Num]; Connected = (state.gemStatus[Num].connected == 1); _dirty = true; }
private void UpdateGemState(int num) { PSMoveSharpGemState selected_gem = state.gemStates[num]; position[num].x = (float)Convert.ToInt32(selected_gem.pos.x) / 100; position[num].y = (float)Convert.ToInt32(selected_gem.pos.y) / 100; position[num].z = (float)Convert.ToInt32(selected_gem.pos.z) / 100; velocity[num].x = (float)Convert.ToInt32(selected_gem.vel.x) / 100; velocity[num].y = (float)Convert.ToInt32(selected_gem.vel.y) / 100; velocity[num].z = (float)Convert.ToInt32(selected_gem.vel.z) / 100; acceleration[num].x = (float)Convert.ToInt32(selected_gem.accel.x) / 100; acceleration[num].y = (float)Convert.ToInt32(selected_gem.accel.y) / 100; acceleration[num].z = (float)Convert.ToInt32(selected_gem.accel.z) / 100; Quaternion rotation = new Quaternion(selected_gem.quat.x, selected_gem.quat.y, selected_gem.quat.z, selected_gem.quat.w); orientation[num] = rotation.eulerAngles; qOrientation[num] = rotation; //orientation[num] = Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).x); angularVelocity[num].x = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.x); angularVelocity[num].y = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.y); angularVelocity[num].z = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.z); angularAcceleration[num].x = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.x); angularAcceleration[num].y = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.y); angularAcceleration[num].z = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.z); handlePosition[num].x = (float)Convert.ToInt32(selected_gem.handle_pos.x) / 100; handlePosition[num].y = (float)Convert.ToInt32(selected_gem.handle_pos.y) / 100; handlePosition[num].z = (float)Convert.ToInt32(selected_gem.handle_pos.z) / 100; handleVelocity[num].x = (float)Convert.ToInt32(selected_gem.handle_vel.x) / 100; handleVelocity[num].y = (float)Convert.ToInt32(selected_gem.handle_vel.y) / 100; handleVelocity[num].z = (float)Convert.ToInt32(selected_gem.handle_vel.z) / 100; handleAcceleration[num].x = (float)Convert.ToInt32(selected_gem.handle_accel.x) / 100; handleAcceleration[num].y = (float)Convert.ToInt32(selected_gem.handle_accel.y) / 100; handleAcceleration[num].z = (float)Convert.ToInt32(selected_gem.handle_accel.z) / 100; isButtonSquare[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0); isButtonCross[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0); isButtonCircle[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0); isButtonTriangle[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0); isButtonMove[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0); valueT[num] = selected_gem.pad.analog_trigger; isButtonT[num] = (valueT[num] >= thresholdT); isButtonStart[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0); isButtonSelect[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0); }
public void Update(PSMoveSharpGemState gemState, PSMoveSharpSphereState sphereState, PSMoveSharpImageState imageState) { // gem state Position = PSMoveUtil.Float4ToVector3(gemState.pos)/100; Velocity = PSMoveUtil.Float4ToVector3(gemState.vel)/100; Acceleration = PSMoveUtil.Float4ToVector3(gemState.accel)/100; QOrientation = PSMoveUtil.Float4ToQuaternion(gemState.quat); Orientation = QOrientation.eulerAngles; AngularVelocity = PSMoveUtil.Float4ToVector3(gemState.angvel) * Mathf.Rad2Deg; AngularAcceleration = PSMoveUtil.Float4ToVector3(gemState.angaccel) * Mathf.Rad2Deg; HandlePosition = PSMoveUtil.Float4ToVector3(gemState.handle_pos)/100; HandleVelocity = PSMoveUtil.Float4ToVector3(gemState.handle_vel)/100; HandleAcceleration = PSMoveUtil.Float4ToVector3(gemState.handle_accel)/100; PrevButtons = Buttons; Buttons = MoveButton.None; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0) Buttons |= MoveButton.Square; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0) Buttons |= MoveButton.Cross; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0) Buttons |= MoveButton.Circle; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0) Buttons |= MoveButton.Triangle; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0) Buttons |= MoveButton.Move; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0) Buttons |= MoveButton.Start; if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0) Buttons |= MoveButton.Select; ValueT = gemState.pad.analog_trigger; if(ValueT >= thresholdT) Buttons |= MoveButton.T; // sphere state SphereColor = new Color(sphereState.r, sphereState.g, sphereState.b); IsTracking = (sphereState.tracking == 1); TrackingHue = (int)sphereState.tracking_hue; // image state SpherePixelPosition = new Vector2(imageState.u, imageState.v); SpherePixelRadius = imageState.r; SphereProjectionPosition = new Vector2(imageState.projectionx, imageState.projectiony); SphereDistance = imageState.distance/100; SphereVisible = (imageState.visible == 1); SphereRadiusValid = (imageState.r_valid == 1); }
public void Update(PSMoveSharpGemState gemState, PSMoveSharpSphereState sphereState, PSMoveSharpImageState imageState) { // gem state Position = PSMoveUtil.Float4ToVector3(gemState.pos) / 100; Velocity = PSMoveUtil.Float4ToVector3(gemState.vel) / 100; Acceleration = PSMoveUtil.Float4ToVector3(gemState.accel) / 100; QOrientation = PSMoveUtil.Float4ToQuaternion(gemState.quat); Orientation = QOrientation.eulerAngles; AngularVelocity = PSMoveUtil.Float4ToVector3(gemState.angvel) * Mathf.Rad2Deg; AngularAcceleration = PSMoveUtil.Float4ToVector3(gemState.angaccel) * Mathf.Rad2Deg; HandlePosition = PSMoveUtil.Float4ToVector3(gemState.handle_pos) / 100; HandleVelocity = PSMoveUtil.Float4ToVector3(gemState.handle_vel) / 100; HandleAcceleration = PSMoveUtil.Float4ToVector3(gemState.handle_accel) / 100; PrevButtons = Buttons; Buttons = MoveButton.None; if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0) { Buttons |= MoveButton.Square; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0) { Buttons |= MoveButton.Cross; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0) { Buttons |= MoveButton.Circle; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0) { Buttons |= MoveButton.Triangle; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0) { Buttons |= MoveButton.Move; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0) { Buttons |= MoveButton.Start; } if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0) { Buttons |= MoveButton.Select; } ValueT = gemState.pad.analog_trigger; if (ValueT >= thresholdT) { Buttons |= MoveButton.T; } // sphere state SphereColor = new Color(sphereState.r, sphereState.g, sphereState.b); IsTracking = (sphereState.tracking == 1); TrackingHue = (int)sphereState.tracking_hue; // image state SpherePixelPosition = new Vector2(imageState.u, imageState.v); SpherePixelRadius = imageState.r; SphereProjectionPosition = new Vector2(imageState.projectionx, imageState.projectiony); SphereDistance = imageState.distance / 100; SphereVisible = (imageState.visible == 1); SphereRadiusValid = (imageState.r_valid == 1); }
private void updateTabPageMove(PSMoveSharpState state) { checkBoxMove1.Checked = (state.gemStatus[0].connected == 1); checkBoxMove2.Checked = (state.gemStatus[1].connected == 1); checkBoxMove3.Checked = (state.gemStatus[2].connected == 1); checkBoxMove4.Checked = (state.gemStatus[3].connected == 1); checkBoxMoveResetEnabled.Checked = Program.reset_enabled[Program.selected_move]; buttonResetEnabled.Text = Program.reset_enabled[Program.selected_move] ? "Disable" : "Enable"; bool selected_move_connected = (state.gemStatus[Program.selected_move].connected == 1); PSMoveSharpGemState selected_gem = state.gemStates[Program.selected_move]; labelPosValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.x).ToString() : "N/A"; labelPosValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.y).ToString() : "N/A"; labelPosValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.z).ToString() : "N/A"; labelVelValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.x).ToString() : "N/A"; labelVelValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.y).ToString() : "N/A"; labelVelValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.z).ToString() : "N/A"; labelAccValX.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.x).ToString() : "N/A"; labelAccValY.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.y).ToString() : "N/A"; labelAccValZ.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.z).ToString() : "N/A"; labelQuatValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).x).ToString() : "N/A"; labelQuatValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).y).ToString() : "N/A"; labelQuatValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).z).ToString() : "N/A"; labelAngVelValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.x).ToString() : "N/A"; labelAngVelValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.y).ToString() : "N/A"; labelAngVelValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.z).ToString() : "N/A"; labelAngAccValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.x).ToString() : "N/A"; labelAngAccValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.y).ToString() : "N/A"; labelAngAccValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.z).ToString() : "N/A"; labelHandlePosValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.x).ToString() : "N/A"; labelHandlePosValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.y).ToString() : "N/A"; labelHandlePosValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.z).ToString() : "N/A"; labelHandleVelValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.x).ToString() : "N/A"; labelHandleVelValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.y).ToString() : "N/A"; labelHandleVelValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.z).ToString() : "N/A"; labelHandleAccValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.x).ToString() : "N/A"; labelHandleAccValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.y).ToString() : "N/A"; labelHandleAccValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.z).ToString() : "N/A"; tableLayoutPanelMoveMotion.Update(); checkBoxMoveSquareVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0); checkBoxMoveCrossVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0); checkBoxMoveCircleVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0); checkBoxMoveTriangleVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0); checkBoxMoveMoveVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0); labelMoveTVal.Text = selected_move_connected ? selected_gem.pad.analog_trigger.ToString() : "N/A"; checkBoxMoveStartVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0); checkBoxMoveSelectVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0); tableLayoutPanelMoveInput.Update(); if (Program.reset_enabled[Program.selected_move] && ((state.gemStates[Program.selected_move].pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0)) { Program.moveClient.SendRequestPacket(PSMoveClient.ClientRequest.PSMoveClientRequestControllerReset, Convert.ToUInt32(Program.selected_move)); } }