sdlxSendJoystickVirtualSensorData function joystick

bool sdlxSendJoystickVirtualSensorData(
  1. Pointer<SdlJoystick> joystick,
  2. int type,
  3. int sensorTimestamp,
  4. List<double> data,
)

Send a sensor update for an opened virtual joystick.

Please note that values set here will not be applied until the next call to SDL_UpdateJoysticks, which can either be called directly, or can be called indirectly through various other SDL APIs, including, but not limited to the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, SDL_WaitEvent.

\param joystick the virtual joystick on which to set state. \param type the type of the sensor on the virtual joystick to update. \param sensor_timestamp a 64-bit timestamp in nanoseconds associated with the sensor reading. \param data the data associated with the sensor reading. \param num_values the number of values pointed to by data. \returns true on success or false on failure; call SDL_GetError() for more information.

\threadsafety It is safe to call this function from any thread.

\since This function is available since SDL 3.2.0.

\sa SDL_SetJoystickVirtualAxis \sa SDL_SetJoystickVirtualButton \sa SDL_SetJoystickVirtualBall \sa SDL_SetJoystickVirtualHat \sa SDL_SetJoystickVirtualTouchpad

extern SDL_DECLSPEC bool SDLCALL SDL_SendJoystickVirtualSensorData(SDL_Joystick *joystick, SDL_SensorType type, Uint64 sensor_timestamp, const float *data, int num_values)

Implementation

bool sdlxSendJoystickVirtualSensorData(
  Pointer<SdlJoystick> joystick,
  int type,
  int sensorTimestamp,
  List<double> data,
) {
  final dataPointer = ffi.calloc<Float>(data.length);
  for (var i = 0; i < data.length; i++) {
    dataPointer[i] = data[i];
  }
  final result = sdlSendJoystickVirtualSensorData(
    joystick,
    type,
    sensorTimestamp,
    dataPointer,
    data.length,
  );
  dataPointer.callocFree();
  return result;
}