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; }