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 SetColorAndTrack(Color color) { SetColor(color); SetTrackingHue(PSMoveUtil.GetHueFromColor(color)); }