using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DS4Windows { public class DS4StateExposed { private DS4State _state; private byte[] accel = new byte[] { 0, 0, 0, 0, 0, 0 }, gyro = new byte[] { 0, 0, 0, 0, 0, 0 }; public DS4StateExposed() { _state = new DS4State(); } public DS4StateExposed(DS4State state) { _state = state; } bool Square { get { return _state.Square; } } bool Triangle { get { return _state.Triangle; } } bool Circle { get { return _state.Circle; } } bool Cross { get { return _state.Cross; } } bool DpadUp { get { return _state.DpadUp; } } bool DpadDown { get { return _state.DpadDown; } } bool DpadLeft { get { return _state.DpadLeft; } } bool DpadRight { get { return _state.DpadRight; } } bool L1 { get { return _state.L1; } } bool L3 { get { return _state.L3; } } bool R1 { get { return _state.R1; } } bool R3 { get { return _state.R3; } } bool Share { get { return _state.Share; } } bool Options { get { return _state.Options; } } bool PS { get { return _state.PS; } } bool Touch1 { get { return _state.Touch1; } } bool Touch2 { get { return _state.Touch2; } } bool TouchButton { get { return _state.TouchButton; } } byte LX { get { return _state.LX; } } byte RX { get { return _state.RX; } } byte LY { get { return _state.LY; } } byte RY { get { return _state.RY; } } byte L2 { get { return _state.L2; } } byte R2 { get { return _state.R2; } } int Battery { get { return _state.Battery; } } /// Holds raw DS4 input data from 14 to 19 public byte[] Accel { set { accel = value; } } /// Holds raw DS4 input data from 20 to 25 public byte[] Gyro { set { gyro = value; } } /// Yaw leftward/counter-clockwise/turn to port or larboard side /// Add double the previous result to this delta and divide by three. public int AccelX { get { return (Int16)((UInt16)(accel[2] << 8) | accel[3]) / 256; } } /// Pitch upward/backward /// Add double the previous result to this delta and divide by three. public int AccelY { get { return (Int16)((UInt16)(accel[0] << 8) | accel[1]) / 256; } } /// roll left/L side of controller down/starboard raising up /// Add double the previous result to this delta and divide by three. public int AccelZ { get { return (Int16)((UInt16)(accel[4] << 8) | accel[5]) / 256; } } /// R side of controller upward /// Add double the previous result to this delta and divide by three. public int GyroX { get { return (Int16)((UInt16)(gyro[0] << 8) | gyro[1]) / 64; } } /// touchpad and button face side of controller upward /// Add double the previous result to this delta and divide by three. public int GyroY { get { return (Int16)((UInt16)(gyro[2] << 8) | gyro[3]) / 64; } } /// Audio/expansion ports upward and light bar/shoulders/bumpers/USB port downward /// Add double the previous result to this delta and divide by three. public int GyroZ { get { return (Int16)((UInt16)(gyro[4] << 8) | gyro[5]) / 64; } } } }