-improved WASM compilation scripts

-added external bindbc.sdl import for WASM
-working on demos (WIP, working simple demo with ECS and SDL2)
-small change in ecs.std
This commit is contained in:
Mergul 2019-11-06 20:38:46 +01:00
parent a8c74d5045
commit 73f2aa6861
60 changed files with 9015 additions and 67 deletions

View file

@ -0,0 +1,225 @@
// 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.sdlgamecontroller;
import bindbc.sdl.config;
import bindbc.sdl.bind.sdljoystick,
bindbc.sdl.bind.sdlrwops;
import bindbc.sdl.bind.sdlstdinc : SDL_bool;
struct SDL_GameController;
enum SDL_GameControllerBindType {
SDL_CONTROLLER_BINDTYPE_NONE = 0,
SDL_CONTROLLER_BINDTYPE_BUTTON,
SDL_CONTROLLER_BINDTYPE_AXIS,
SDL_CONTROLLER_BINDTYPE_HAT,
}
mixin(expandEnum!SDL_GameControllerBindType);
struct SDL_GameControllerButtonBind {
SDL_GameControllerBindType bindType;
union value {
int button;
int axis;
struct hat {
int hat;
int hat_mask;
}
}
alias button = value.button;
alias axis = value.axis;
alias hat = value.hat;
}
enum SDL_GameControllerAxis {
SDL_CONTROLLER_AXIS_INVALID = -1,
SDL_CONTROLLER_AXIS_LEFTX,
SDL_CONTROLLER_AXIS_LEFTY,
SDL_CONTROLLER_AXIS_RIGHTX,
SDL_CONTROLLER_AXIS_RIGHTY,
SDL_CONTROLLER_AXIS_TRIGGERLEFT,
SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
SDL_CONTROLLER_AXIS_MAX
}
mixin(expandEnum!SDL_GameControllerAxis);
enum SDL_GameControllerButton {
SDL_CONTROLLER_BUTTON_INVALID = -1,
SDL_CONTROLLER_BUTTON_A,
SDL_CONTROLLER_BUTTON_B,
SDL_CONTROLLER_BUTTON_X,
SDL_CONTROLLER_BUTTON_Y,
SDL_CONTROLLER_BUTTON_BACK,
SDL_CONTROLLER_BUTTON_GUIDE,
SDL_CONTROLLER_BUTTON_START,
SDL_CONTROLLER_BUTTON_LEFTSTICK,
SDL_CONTROLLER_BUTTON_RIGHTSTICK,
SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
SDL_CONTROLLER_BUTTON_DPAD_UP,
SDL_CONTROLLER_BUTTON_DPAD_DOWN,
SDL_CONTROLLER_BUTTON_DPAD_LEFT,
SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
SDL_CONTROLLER_BUTTON_MAX
}
mixin(expandEnum!SDL_GameControllerButton);
static if(sdlSupport >= SDLSupport.sdl202) {
@nogc nothrow
int SDL_GameControllerAddMappingsFromFile(const(char)* file) {
pragma(inline, true);
return SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file,"rb"),1);
}
}
version(BindSDL_Static) {
extern(C) @nogc nothrow {
int SDL_GameControllerAddMapping(const(char)*);
char* SDL_GameControllerMappingForGUID(SDL_JoystickGUID);
char* SDL_GameControllerMapping(SDL_GameController*);
SDL_bool SDL_IsGameController(int);
const(char)* SDL_GameControllerNameForIndex(int);
SDL_GameController* SDL_GameControllerOpen(int);
const(char)* SDL_GameControllerName(SDL_GameController*);
SDL_bool SDL_GameControllerGetAttached(SDL_GameController*);
SDL_Joystick* SDL_GameControllerGetJoystick(SDL_GameController*);
int SDL_GameControllerEventState(int);
void SDL_GameControllerUpdate();
SDL_GameControllerAxis SDL_GameControllerGetAxisFromString(const(char)*);
const(char)* SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis);
SDL_GameControllerButtonBind SDL_GameControllerGetBindForAxis(SDL_GameController*,SDL_GameControllerAxis);
short SDL_GameControllerGetAxis(SDL_GameController*,SDL_GameControllerAxis);
SDL_GameControllerButton SDL_GameControllerGetButtonFromString(const(char*));
const(char)* SDL_GameControllerGetStringForButton(SDL_GameControllerButton);
SDL_GameControllerButtonBind SDL_GameControllerGetBindForButton(SDL_GameController*,SDL_GameControllerButton);
ubyte SDL_GameControllerGetButton(SDL_GameController*,SDL_GameControllerButton);
void SDL_GameControllerClose(SDL_GameController*);
static if(sdlSupport >= SDLSupport.sdl202) {
int SDL_GameControllerAddMappingsFromRW(SDL_RWops*,int);
}
static if(sdlSupport >= SDLSupport.sdl204) {
SDL_GameController* SDL_GameControllerFromInstanceID(SDL_JoystickID);
}
static if(sdlSupport >= SDLSupport.sdl206) {
ushort SDL_GameControllerGetProduct(SDL_GameController*);
ushort SDL_GameControllerGetProductVersion(SDL_GameController*);
ushort SDL_GameControllerGetVendor(SDL_GameController*);
char* SDL_GameControllerMappingForIndex(int);
int SDL_GameControllerNumMappings();
}
static if(sdlSupport >= SDLSupport.sdl209) {
char* SDL_GameControllerMappingForDeviceIndex(int);
int SDL_GameControllerRumble(SDL_GameController*,ushort,ushort,uint);
}
static if(sdlSupport >= SDLSupport.sdl2010) {
int SDL_GameControllerGetPlayerIndex(SDL_GameController*);
}
}
}
else {
extern(C) @nogc nothrow {
alias pSDL_GameControllerAddMapping = int function(const(char)*);
alias pSDL_GameControllerMappingForGUID = char* function(SDL_JoystickGUID);
alias pSDL_GameControllerMapping = char* function(SDL_GameController*);
alias pSDL_IsGameController = SDL_bool function(int);
alias pSDL_GameControllerNameForIndex = const(char)* function(int);
alias pSDL_GameControllerOpen = SDL_GameController* function(int);
alias pSDL_GameControllerName = const(char)* function(SDL_GameController*);
alias pSDL_GameControllerGetAttached = SDL_bool function(SDL_GameController*);
alias pSDL_GameControllerGetJoystick = SDL_Joystick* function(SDL_GameController*);
alias pSDL_GameControllerEventState = int function(int);
alias pSDL_GameControllerUpdate = void function();
alias pSDL_GameControllerGetAxisFromString = SDL_GameControllerAxis function(const(char)*);
alias pSDL_GameControllerGetStringForAxis = const(char)* function(SDL_GameControllerAxis);
alias pSDL_GameControllerGetBindForAxis = SDL_GameControllerButtonBind function(SDL_GameController*,SDL_GameControllerAxis);
alias pSDL_GameControllerGetAxis = short function(SDL_GameController*,SDL_GameControllerAxis);
alias pSDL_GameControllerGetButtonFromString = SDL_GameControllerButton function(const(char*));
alias pSDL_GameControllerGetStringForButton = const(char)* function(SDL_GameControllerButton);
alias pSDL_GameControllerGetBindForButton = SDL_GameControllerButtonBind function(SDL_GameController*,SDL_GameControllerButton);
alias pSDL_GameControllerGetButton = ubyte function(SDL_GameController*,SDL_GameControllerButton);
alias pSDL_GameControllerClose = void function(SDL_GameController*);
}
__gshared {
pSDL_GameControllerAddMapping SDL_GameControllerAddMapping;
pSDL_GameControllerMappingForGUID SDL_GameControllerMappingForGUID;
pSDL_GameControllerMapping SDL_GameControllerMapping;
pSDL_IsGameController SDL_IsGameController;
pSDL_GameControllerNameForIndex SDL_GameControllerNameForIndex;
pSDL_GameControllerOpen SDL_GameControllerOpen;
pSDL_GameControllerName SDL_GameControllerName;
pSDL_GameControllerGetAttached SDL_GameControllerGetAttached;
pSDL_GameControllerGetJoystick SDL_GameControllerGetJoystick;
pSDL_GameControllerEventState SDL_GameControllerEventState;
pSDL_GameControllerUpdate SDL_GameControllerUpdate;
pSDL_GameControllerGetAxisFromString SDL_GameControllerGetAxisFromString;
pSDL_GameControllerGetStringForAxis SDL_GameControllerGetStringForAxis;
pSDL_GameControllerGetBindForAxis SDL_GameControllerGetBindForAxis;
pSDL_GameControllerGetAxis SDL_GameControllerGetAxis;
pSDL_GameControllerGetButtonFromString SDL_GameControllerGetButtonFromString;
pSDL_GameControllerGetStringForButton SDL_GameControllerGetStringForButton;
pSDL_GameControllerGetBindForButton SDL_GameControllerGetBindForButton;
pSDL_GameControllerGetButton SDL_GameControllerGetButton;
pSDL_GameControllerClose SDL_GameControllerClose;
}
static if(sdlSupport >= SDLSupport.sdl202) {
extern(C) @nogc nothrow {
alias pSDL_GameControllerAddMappingsFromRW = int function(SDL_RWops*,int);
}
__gshared {
pSDL_GameControllerAddMappingsFromRW SDL_GameControllerAddMappingsFromRW;
}
}
static if(sdlSupport >= SDLSupport.sdl204) {
extern(C) @nogc nothrow {
alias pSDL_GameControllerFromInstanceID = SDL_GameController* function(SDL_JoystickID);
}
__gshared {
pSDL_GameControllerFromInstanceID SDL_GameControllerFromInstanceID;
}
}
static if(sdlSupport >= SDLSupport.sdl206) {
extern(C) @nogc nothrow {
alias pSDL_GameControllerGetProduct = ushort function(SDL_GameController*);
alias pSDL_GameControllerGetProductVersion = ushort function(SDL_GameController*);
alias pSDL_GameControllerGetVendor = ushort function(SDL_GameController*);
alias pSDL_GameControllerMappingForIndex = char* function(int);
alias pSDL_GameControllerNumMappings = int function();
}
__gshared {
pSDL_GameControllerGetProduct SDL_GameControllerGetProduct;
pSDL_GameControllerGetProductVersion SDL_GameControllerGetProductVersion;
pSDL_GameControllerGetVendor SDL_GameControllerGetVendor;
pSDL_GameControllerMappingForIndex SDL_GameControllerMappingForIndex;
pSDL_GameControllerNumMappings SDL_GameControllerNumMappings;
}
}
static if(sdlSupport >= SDLSupport.sdl209) {
extern(C) @nogc nothrow {
alias pSDL_GameControllerMappingForDeviceIndex = char* function(int);
alias pSDL_GameControllerRumble = int function(SDL_GameController*,ushort,ushort,uint);
}
__gshared {
pSDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex;
pSDL_GameControllerRumble SDL_GameControllerRumble;
}
}
static if(sdlSupport >= SDLSupport.sdl2010) {
extern(C) @nogc nothrow {
alias pSDL_GameControllerGetPlayerIndex = int function(SDL_GameController*);
}
__gshared {
pSDL_GameControllerGetPlayerIndex SDL_GameControllerGetPlayerIndex;
}
}
}