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

View File

@ -9,6 +9,39 @@ namespace SDL
[Typedef] [Typedef]
public enum SDL_HapticID : UInt32; 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 public static partial class SDL3
{ {
[MustDisposeResource] [MustDisposeResource]