private float w, x, y, z; // for Vector3 and Quaternion components #endregion Fields #region Constructors public PSMoveController(int index, PSMoveTracker tracker) { this.Index = index; this.tracker = tracker; this.Connect(); this.position = new Vector3(); this.rawPosition = new Vector3(); this.centerPosition = new Vector3(); this.rotation = new Quaternion(); this.gyroscope = new Vector3(); this.accelerometer = new Vector3(); this.led = new RGB_Color(); this.rumble = (char)0; this.buttons = 0; this.buttonsPressed = 0; this.buttonsReleased = 0; Global = new PSMoveGlobal(this); }
public static TssError UpdateQuaternion(int deviceId, Quaternion quaternion) { uint timestamp; var quat = new float[4]; TssStreamPacket packet; TssError error; if (isStreaming) { error = tss_getLastStreamData(deviceId, out packet, 16, out timestamp); quat[0] = packet.quat[0]; quat[1] = packet.quat[1]; quat[2] = packet.quat[2]; quat[3] = packet.quat[3]; } else { error = tss_getTaredOrientationAsQuaternion((uint)deviceId, quat, out timestamp); //xyzw } quaternion.Update(quat[3], quat[0], quat[1], quat[2], false); return error; }
public static TssError UpdateSensor(uint deviceId, Quaternion quaternion, out byte button_state) { uint timestamp; var quat = new float[4]; TssError error; if (stream_button_state) { TssStreamPacketQuatButton packet; error = tss_getLastStreamData(deviceId, out packet, 17, out timestamp); quat[0] = packet.quat[0]; quat[1] = packet.quat[1]; quat[2] = packet.quat[2]; quat[3] = packet.quat[3]; button_state = packet.button_state; } else { TssStreamPacketQuat packet; error = tss_getLastStreamData(deviceId, out packet, 16, out timestamp); quat[0] = packet.quat[0]; quat[1] = packet.quat[1]; quat[2] = packet.quat[2]; quat[3] = packet.quat[3]; button_state = 0; } quaternion.Update(quat[3], quat[0], quat[1], quat[2], false); return error; }