-added external bindbc.sdl import for WASM -working on demos (WIP, working simple demo with ECS and SDL2) -small change in ecs.std
240 lines
No EOL
7.9 KiB
D
240 lines
No EOL
7.9 KiB
D
|
|
// Copyright Michael D. Parker 2018.
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
module bindbc.sdl.bind.sdlhaptic;
|
|
|
|
import bindbc.sdl.bind.sdljoystick : SDL_Joystick;
|
|
|
|
struct SDL_Haptic;
|
|
|
|
enum : ushort {
|
|
SDL_HAPTIC_CONSTANT = 1u<<0,
|
|
SDL_HAPTIC_SINE = 1u<<1,
|
|
SDL_HAPTIC_LEFTRIGHT = 1u<<2,
|
|
SDL_HAPTIC_TRIANGLE = 1u<<3,
|
|
SDL_HAPTIC_SAWTOOTHUP = 1u<<4,
|
|
SDL_HAPTIC_SAWTOOTHDOWN = 1u<<5,
|
|
SDL_HAPTIC_RAMP = 1u<<6,
|
|
SDL_HAPTIC_SPRING = 1u<<7,
|
|
SDL_HAPTIC_DAMPER = 1u<<8,
|
|
SDL_HAPTIC_INERTIA = 1u<<9,
|
|
SDL_HAPTIC_FRICTION = 1u<<10,
|
|
SDL_HAPTIC_CUSTOM = 1u<<11,
|
|
SDL_HAPTIC_GAIN = 1u<<12,
|
|
SDL_HAPTIC_AUTOCENTER = 1u<<13,
|
|
SDL_HAPTIC_STATUS = 1u<<14,
|
|
SDL_HAPTIC_PAUSE = 1u<<15,
|
|
}
|
|
|
|
enum {
|
|
SDL_HAPTIC_POLAR = 0,
|
|
SDL_HAPTIC_CARTESIAN = 1,
|
|
SDL_HAPTIC_SPHERICAL = 2,
|
|
}
|
|
|
|
enum SDL_HAPTIC_INFINITY = 4294967295U;
|
|
|
|
struct SDL_HapticDirection {
|
|
ubyte type;
|
|
int[3] dir;
|
|
}
|
|
|
|
struct SDL_HapticConstant {
|
|
ushort type;
|
|
SDL_HapticDirection direction;
|
|
uint length;
|
|
ushort delay;
|
|
ushort button;
|
|
ushort interval;
|
|
short level;
|
|
ushort attack_length;
|
|
ushort attack_level;
|
|
ushort fade_length;
|
|
ushort fade_level;
|
|
}
|
|
|
|
struct SDL_HapticPeriodic {
|
|
ushort type;
|
|
SDL_HapticDirection direction;
|
|
uint length;
|
|
uint delay;
|
|
ushort button;
|
|
ushort interval;
|
|
ushort period;
|
|
short magnitude;
|
|
short offset;
|
|
ushort phase;
|
|
ushort attack_length;
|
|
ushort attack_level;
|
|
ushort fade_length;
|
|
ushort fade_level;
|
|
}
|
|
|
|
struct SDL_HapticCondition {
|
|
ushort type;
|
|
SDL_HapticDirection direciton;
|
|
uint length;
|
|
ushort delay;
|
|
ushort button;
|
|
ushort interval;
|
|
ushort[3] right_sat;
|
|
ushort[3] left_sat;
|
|
short[3] right_coeff;
|
|
short[3] left_coeff;
|
|
ushort[3] deadband;
|
|
ushort[3] center;
|
|
}
|
|
|
|
struct SDL_HapticRamp {
|
|
ushort type;
|
|
SDL_HapticDirection direction;
|
|
uint length;
|
|
ushort delay;
|
|
ushort button;
|
|
ushort interval;
|
|
short start;
|
|
short end;
|
|
ushort attack_length;
|
|
ushort attack_level;
|
|
ushort fade_length;
|
|
ushort fade_level;
|
|
}
|
|
|
|
struct SDL_HapticLeftRight {
|
|
ushort type;
|
|
uint length;
|
|
ushort large_magnitude;
|
|
ushort small_magnitude;
|
|
}
|
|
|
|
struct SDL_HapticCustom {
|
|
ushort type;
|
|
SDL_HapticDirection direction;
|
|
uint length;
|
|
ushort delay;
|
|
ushort button;
|
|
ushort interval;
|
|
ubyte channels;
|
|
ushort period;
|
|
ushort samples;
|
|
ushort* data;
|
|
ushort attack_length;
|
|
ushort attack_level;
|
|
ushort fade_length;
|
|
ushort fade_level;
|
|
}
|
|
|
|
union SDL_HapticEffect {
|
|
ushort type;
|
|
SDL_HapticConstant constant;
|
|
SDL_HapticPeriodic periodic;
|
|
SDL_HapticCondition condition;
|
|
SDL_HapticRamp ramp;
|
|
SDL_HapticLeftRight leftright;
|
|
SDL_HapticCustom custom;
|
|
}
|
|
|
|
version(BindSDL_Static) {
|
|
extern(C) @nogc nothrow {
|
|
int SDL_NumHaptics();
|
|
const(char)* SDL_HapticName(int);
|
|
SDL_Haptic* SDL_HapticOpen(int);
|
|
int SDL_HapticOpened(int);
|
|
int SDL_HapticIndex(SDL_Haptic*);
|
|
int SDL_MouseIsHaptic();
|
|
SDL_Haptic* SDL_HapticOpenFromMouse();
|
|
int SDL_JoystickIsHaptic(SDL_Joystick*);
|
|
SDL_Haptic* SDL_HapticOpenFromJoystick(SDL_Joystick*);
|
|
int SDL_HapticClose(SDL_Haptic*);
|
|
int SDL_HapticNumEffects(SDL_Haptic*);
|
|
int SDL_HapticNumEffectsPlaying(SDL_Haptic*);
|
|
uint SDL_HapticQuery(SDL_Haptic*);
|
|
int SDL_HapticNumAxes(SDL_Haptic*);
|
|
int SDL_HapticEffectSupported(SDL_Haptic*,SDL_HapticEffect*);
|
|
int SDL_HapticNewEffect(SDL_Haptic*,SDL_HapticEffect*);
|
|
int SDL_HapticUpdateEffect(SDL_Haptic*,int,SDL_HapticEffect*);
|
|
int SDL_HapticRunEffect(SDL_Haptic*,int,uint);
|
|
int SDL_HapticStopEffect(SDL_Haptic*,int);
|
|
int SDL_HapticDestroyEffect(SDL_Haptic*,int);
|
|
int SDL_HapticGetEffectStatus(SDL_Haptic*,int);
|
|
int SDL_HapticSetGain(SDL_Haptic*,int);
|
|
int SDL_HapticSetAutocenter(SDL_Haptic*,int);
|
|
int SDL_HapticPause(SDL_Haptic*);
|
|
int SDL_HapticUnpause(SDL_Haptic*);
|
|
int SDL_HapticStopAll(SDL_Haptic*);
|
|
int SDL_HapticRumbleSupported(SDL_Haptic*);
|
|
int SDL_HapticRumbleInit(SDL_Haptic*);
|
|
int SDL_HapticRumblePlay(SDL_Haptic*,float,uint);
|
|
int SDL_HapticRumbleStop(SDL_Haptic*);
|
|
}
|
|
}
|
|
else {
|
|
extern(C) @nogc nothrow {
|
|
alias pSDL_NumHaptics = int function();
|
|
alias pSDL_HapticName = const(char)* function(int);
|
|
alias pSDL_HapticOpen = SDL_Haptic* function(int);
|
|
alias pSDL_HapticOpened = int function(int);
|
|
alias pSDL_HapticIndex = int function(SDL_Haptic*);
|
|
alias pSDL_MouseIsHaptic = int function();
|
|
alias pSDL_HapticOpenFromMouse = SDL_Haptic* function();
|
|
alias pSDL_JoystickIsHaptic = int function(SDL_Joystick*);
|
|
alias pSDL_HapticOpenFromJoystick = SDL_Haptic* function(SDL_Joystick*);
|
|
alias pSDL_HapticClose = int function(SDL_Haptic*);
|
|
alias pSDL_HapticNumEffects = int function(SDL_Haptic*);
|
|
alias pSDL_HapticNumEffectsPlaying = int function(SDL_Haptic*);
|
|
alias pSDL_HapticQuery = uint function(SDL_Haptic*);
|
|
alias pSDL_HapticNumAxes = int function(SDL_Haptic*);
|
|
alias pSDL_HapticEffectSupported = int function(SDL_Haptic*,SDL_HapticEffect*);
|
|
alias pSDL_HapticNewEffect = int function(SDL_Haptic*,SDL_HapticEffect*);
|
|
alias pSDL_HapticUpdateEffect = int function(SDL_Haptic*,int,SDL_HapticEffect*);
|
|
alias pSDL_HapticRunEffect = int function(SDL_Haptic*,int,uint);
|
|
alias pSDL_HapticStopEffect = int function(SDL_Haptic*,int);
|
|
alias pSDL_HapticDestroyEffect = int function(SDL_Haptic*,int);
|
|
alias pSDL_HapticGetEffectStatus = int function(SDL_Haptic*,int);
|
|
alias pSDL_HapticSetGain = int function(SDL_Haptic*,int);
|
|
alias pSDL_HapticSetAutocenter = int function(SDL_Haptic*,int);
|
|
alias pSDL_HapticPause = int function(SDL_Haptic*);
|
|
alias pSDL_HapticUnpause = int function(SDL_Haptic*);
|
|
alias pSDL_HapticStopAll = int function(SDL_Haptic*);
|
|
alias pSDL_HapticRumbleSupported = int function(SDL_Haptic*);
|
|
alias pSDL_HapticRumbleInit = int function(SDL_Haptic*);
|
|
alias pSDL_HapticRumblePlay = int function(SDL_Haptic*,float,uint);
|
|
alias pSDL_HapticRumbleStop = int function(SDL_Haptic*);
|
|
}
|
|
|
|
__gshared {
|
|
pSDL_NumHaptics SDL_NumHaptics;
|
|
pSDL_HapticName SDL_HapticName;
|
|
pSDL_HapticOpen SDL_HapticOpen;
|
|
pSDL_HapticOpened SDL_HapticOpened;
|
|
pSDL_HapticIndex SDL_HapticIndex;
|
|
pSDL_MouseIsHaptic SDL_MouseIsHaptic;
|
|
pSDL_HapticOpenFromMouse SDL_HapticOpenFromMouse;
|
|
pSDL_JoystickIsHaptic SDL_JoystickIsHaptic;
|
|
pSDL_HapticOpenFromJoystick SDL_HapticOpenFromJoystick;
|
|
pSDL_HapticClose SDL_HapticClose;
|
|
pSDL_HapticNumEffects SDL_HapticNumEffects;
|
|
pSDL_HapticNumEffectsPlaying SDL_HapticNumEffectsPlaying;
|
|
pSDL_HapticQuery SDL_HapticQuery;
|
|
pSDL_HapticNumAxes SDL_HapticNumAxes;
|
|
pSDL_HapticEffectSupported SDL_HapticEffectSupported;
|
|
pSDL_HapticNewEffect SDL_HapticNewEffect;
|
|
pSDL_HapticUpdateEffect SDL_HapticUpdateEffect;
|
|
pSDL_HapticRunEffect SDL_HapticRunEffect;
|
|
pSDL_HapticStopEffect SDL_HapticStopEffect;
|
|
pSDL_HapticDestroyEffect SDL_HapticDestroyEffect;
|
|
pSDL_HapticGetEffectStatus SDL_HapticGetEffectStatus;
|
|
pSDL_HapticSetGain SDL_HapticSetGain;
|
|
pSDL_HapticSetAutocenter SDL_HapticSetAutocenter;
|
|
pSDL_HapticPause SDL_HapticPause;
|
|
pSDL_HapticUnpause SDL_HapticUnpause;
|
|
pSDL_HapticStopAll SDL_HapticStopAll;
|
|
pSDL_HapticRumbleSupported SDL_HapticRumbleSupported;
|
|
pSDL_HapticRumbleInit SDL_HapticRumbleInit;
|
|
pSDL_HapticRumblePlay SDL_HapticRumblePlay;
|
|
pSDL_HapticRumbleStop SDL_HapticRumbleStop;
|
|
}
|
|
} |