Ejemplo n.º 1
0
        public Vector3 GetMotionData(MotionInputId inputId)
        {
            SDL_SensorType sensorType = SDL_SensorType.SDL_SENSOR_INVALID;

            if (inputId == MotionInputId.Accelerometer)
            {
                sensorType = SDL_SensorType.SDL_SENSOR_ACCEL;
            }
            else if (inputId == MotionInputId.Gyroscope)
            {
                sensorType = SDL_SensorType.SDL_SENSOR_GYRO;
            }

            if (Features.HasFlag(GamepadFeaturesFlag.Motion) && sensorType != SDL_SensorType.SDL_SENSOR_INVALID)
            {
                const int ElementCount = 3;

                unsafe
                {
                    float *values = stackalloc float[ElementCount];

                    int result = SDL_GameControllerGetSensorData(_gamepadHandle, sensorType, (IntPtr)values, ElementCount);

                    if (result == 0)
                    {
                        Vector3 value = new Vector3(values[0], values[1], values[2]);

                        if (inputId == MotionInputId.Gyroscope)
                        {
                            return(RadToDegree(value));
                        }
                        else if (inputId == MotionInputId.Accelerometer)
                        {
                            return(GsToMs2(value));
                        }

                        return(value);
                    }
                }
            }

            return(Vector3.Zero);
        }
Ejemplo n.º 2
0
        public Vector3 GetMotionData(MotionInputId inputId)
        {
            // No operations

            return(Vector3.Zero);
        }
Ejemplo n.º 3
0
 public Vector3 GetMotionData(MotionInputId inputId)
 {
     throw new NotImplementedException();
 }