Add new SDL_haptic typedefs and enums

While SDL_HapticEffectType has flag-like values, it's publicly not a [Flags] enum
as the possible values are exclusive.
See for example https://wiki.libsdl.org/SDL3/SDL_HapticPeriodic.
This commit is contained in:
Susko3 2025-06-06 18:47:40 +02:00
parent 29c7e9c126
commit 53bedf11e3
2 changed files with 47 additions and 23 deletions

View File

@ -34,8 +34,7 @@ namespace SDL
public partial struct SDL_HapticDirection
{
[NativeTypeName("SDL_HapticDirectionType")]
public byte type;
public SDL_HapticDirectionType type;
[NativeTypeName("Sint32[3]")]
public _dir_e__FixedBuffer dir;
@ -49,8 +48,7 @@ namespace SDL
public partial struct SDL_HapticConstant
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
public SDL_HapticDirection direction;
@ -84,8 +82,7 @@ namespace SDL
public partial struct SDL_HapticPeriodic
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
public SDL_HapticDirection direction;
@ -128,8 +125,7 @@ namespace SDL
public partial struct SDL_HapticCondition
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
public SDL_HapticDirection direction;
@ -202,8 +198,7 @@ namespace SDL
public partial struct SDL_HapticRamp
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
public SDL_HapticDirection direction;
@ -240,8 +235,7 @@ namespace SDL
public partial struct SDL_HapticLeftRight
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
[NativeTypeName("Uint32")]
public uint length;
@ -255,8 +249,7 @@ namespace SDL
public unsafe partial struct SDL_HapticCustom
{
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
public SDL_HapticDirection direction;
@ -301,8 +294,7 @@ namespace SDL
public partial struct SDL_HapticEffect
{
[FieldOffset(0)]
[NativeTypeName("SDL_HapticEffectType")]
public ushort type;
public SDL_HapticEffectType type;
[FieldOffset(0)]
public SDL_HapticConstant constant;
@ -380,27 +372,26 @@ namespace SDL
public static extern SDLBool SDL_HapticEffectSupported(SDL_Haptic* haptic, [NativeTypeName("const SDL_HapticEffect *")] SDL_HapticEffect* effect);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("SDL_HapticEffectID")]
public static extern int SDL_CreateHapticEffect(SDL_Haptic* haptic, [NativeTypeName("const SDL_HapticEffect *")] SDL_HapticEffect* effect);
public static extern SDL_HapticEffectID SDL_CreateHapticEffect(SDL_Haptic* haptic, [NativeTypeName("const SDL_HapticEffect *")] SDL_HapticEffect* effect);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("bool")]
public static extern SDLBool SDL_UpdateHapticEffect(SDL_Haptic* haptic, [NativeTypeName("SDL_HapticEffectID")] int effect, [NativeTypeName("const SDL_HapticEffect *")] SDL_HapticEffect* data);
public static extern SDLBool SDL_UpdateHapticEffect(SDL_Haptic* haptic, SDL_HapticEffectID effect, [NativeTypeName("const SDL_HapticEffect *")] SDL_HapticEffect* data);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("bool")]
public static extern SDLBool SDL_RunHapticEffect(SDL_Haptic* haptic, [NativeTypeName("SDL_HapticEffectID")] int effect, [NativeTypeName("Uint32")] uint iterations);
public static extern SDLBool SDL_RunHapticEffect(SDL_Haptic* haptic, SDL_HapticEffectID effect, [NativeTypeName("Uint32")] uint iterations);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("bool")]
public static extern SDLBool SDL_StopHapticEffect(SDL_Haptic* haptic, [NativeTypeName("SDL_HapticEffectID")] int effect);
public static extern SDLBool SDL_StopHapticEffect(SDL_Haptic* haptic, SDL_HapticEffectID effect);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
public static extern void SDL_DestroyHapticEffect(SDL_Haptic* haptic, [NativeTypeName("SDL_HapticEffectID")] int effect);
public static extern void SDL_DestroyHapticEffect(SDL_Haptic* haptic, SDL_HapticEffectID effect);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("bool")]
public static extern SDLBool SDL_GetHapticEffectStatus(SDL_Haptic* haptic, [NativeTypeName("SDL_HapticEffectID")] int effect);
public static extern SDLBool SDL_GetHapticEffectStatus(SDL_Haptic* haptic, SDL_HapticEffectID effect);
[DllImport("SDL3", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("bool")]

View File

@ -9,6 +9,39 @@ namespace SDL
[Typedef]
public enum SDL_HapticID : UInt32;
[Typedef]
public enum SDL_HapticEffectType : UInt16
{
SDL_HAPTIC_CONSTANT = (UInt16)SDL3.SDL_HAPTIC_CONSTANT,
SDL_HAPTIC_SINE = (UInt16)SDL3.SDL_HAPTIC_SINE,
SDL_HAPTIC_SQUARE = (UInt16)SDL3.SDL_HAPTIC_SQUARE,
SDL_HAPTIC_TRIANGLE = (UInt16)SDL3.SDL_HAPTIC_TRIANGLE,
SDL_HAPTIC_SAWTOOTHUP = (UInt16)SDL3.SDL_HAPTIC_SAWTOOTHUP,
SDL_HAPTIC_SAWTOOTHDOWN = (UInt16)SDL3.SDL_HAPTIC_SAWTOOTHDOWN,
SDL_HAPTIC_RAMP = (UInt16)SDL3.SDL_HAPTIC_RAMP,
SDL_HAPTIC_SPRING = (UInt16)SDL3.SDL_HAPTIC_SPRING,
SDL_HAPTIC_DAMPER = (UInt16)SDL3.SDL_HAPTIC_DAMPER,
SDL_HAPTIC_INERTIA = (UInt16)SDL3.SDL_HAPTIC_INERTIA,
SDL_HAPTIC_FRICTION = (UInt16)SDL3.SDL_HAPTIC_FRICTION,
SDL_HAPTIC_LEFTRIGHT = (UInt16)SDL3.SDL_HAPTIC_LEFTRIGHT,
SDL_HAPTIC_RESERVED1 = (UInt16)SDL3.SDL_HAPTIC_RESERVED1,
SDL_HAPTIC_RESERVED2 = (UInt16)SDL3.SDL_HAPTIC_RESERVED2,
SDL_HAPTIC_RESERVED3 = (UInt16)SDL3.SDL_HAPTIC_RESERVED3,
SDL_HAPTIC_CUSTOM = (UInt16)SDL3.SDL_HAPTIC_CUSTOM,
}
[Typedef]
public enum SDL_HapticDirectionType : byte
{
SDL_HAPTIC_POLAR = SDL3.SDL_HAPTIC_POLAR,
SDL_HAPTIC_CARTESIAN = SDL3.SDL_HAPTIC_CARTESIAN,
SDL_HAPTIC_SPHERICAL = SDL3.SDL_HAPTIC_SPHERICAL,
SDL_HAPTIC_STEERING_AXIS = SDL3.SDL_HAPTIC_STEERING_AXIS,
}
[Typedef]
public enum SDL_HapticEffectID : int;
public static partial class SDL3
{
[MustDisposeResource]