Added getMousePosition() and getControllerAxis()
This commit is contained in:
parent
f9b2be5a2e
commit
bd35674b21
3 changed files with 156 additions and 64 deletions
|
@ -346,6 +346,13 @@ GAMEPAD_3_MAX = GAMEPAD_1_MAX + 200
|
||||||
GAMEPAD_4_MIN = GAMEPAD_1_MAX + 300
|
GAMEPAD_4_MIN = GAMEPAD_1_MAX + 300
|
||||||
GAMEPAD_4_MAX = GAMEPAD_1_MAX + 300
|
GAMEPAD_4_MAX = GAMEPAD_1_MAX + 300
|
||||||
|
|
||||||
|
GAMEPAD_AXIS_LEFT_X = 0
|
||||||
|
GAMEPAD_AXIS_LEFT_Y = 1
|
||||||
|
GAMEPAD_AXIS_RIGHT_X = 2
|
||||||
|
GAMEPAD_AXIS_RIGHT_Y = 3
|
||||||
|
GAMEPAD_AXIS_LEFT_TRIGGER = 4
|
||||||
|
GAMEPAD_AXIS_RIGHT_TRIGGER = 5
|
||||||
|
|
||||||
MOUSE_1 = {
|
MOUSE_1 = {
|
||||||
BUTTON_LEFT = { name = "BUTTON_LEFT", value = 1000 },
|
BUTTON_LEFT = { name = "BUTTON_LEFT", value = 1000 },
|
||||||
BUTTON_RIGHT = { name = "BUTTON_RIGHT", value = 1001 },
|
BUTTON_RIGHT = { name = "BUTTON_RIGHT", value = 1001 },
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
|
|
||||||
|
|
||||||
if [[ -z $1 ]]; then
|
if [[ -z $1 ]]; then
|
||||||
G_PLATFORM=pi
|
G_PLATFORM=mac
|
||||||
# G_PLATFORM=mingw
|
# G_PLATFORM=mingw
|
||||||
# G_PLATFORM=linux
|
# G_PLATFORM=linux
|
||||||
G_BITS=32
|
G_BITS=64
|
||||||
G_THIRDPARTY=$(pwd)/thirdparty
|
G_THIRDPARTY=$(pwd)/thirdparty
|
||||||
G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}"
|
G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}"
|
||||||
G_TYPE=static
|
G_TYPE=static
|
||||||
|
@ -45,50 +45,42 @@ case "${G_PLATFORM}" in
|
||||||
pi)
|
pi)
|
||||||
G_CROSS_HOME="/opt/cross/pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin"
|
G_CROSS_HOME="/opt/cross/pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin"
|
||||||
G_OS="linux"
|
G_OS="linux"
|
||||||
G_CCOMPILER="${G_CROSS_HOME}/arm-linux-gnueabihf-gcc"
|
|
||||||
G_CPPCOMPILER="${G_CROSS_HOME}/arm-linux-gnueabihf-g++"
|
|
||||||
G_CROSS="arm-linux-gnueabihf"
|
G_CROSS="arm-linux-gnueabihf"
|
||||||
|
G_CCOMPILER="${G_CROSS_HOME}/${G_CROSS}-gcc"
|
||||||
|
G_CPPCOMPILER="${G_CROSS_HOME}/${G_CROSS}-g++"
|
||||||
G_LUAPLAT="posix"
|
G_LUAPLAT="posix"
|
||||||
G_ARCH="armv6"
|
G_ARCH="armv6"
|
||||||
G_SYSROOT="/opt/cross/pi/buster"
|
G_SYSROOT="/opt/cross/pi/buster"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
pi32)
|
|
||||||
G_OS="linux"
|
|
||||||
G_CCOMPILER="arm-linux-gnueabihf-gcc"
|
|
||||||
G_CPPCOMPILER="arm-linux-gnueabihf-g++"
|
|
||||||
G_CROSS="arm-linux-gnueabihf"
|
|
||||||
G_LUAPLAT="posix"
|
|
||||||
G_ARCH="armv6"
|
|
||||||
G_SYSROOT="/opt/cross/pi/buster"
|
|
||||||
;;
|
|
||||||
|
|
||||||
pi64)
|
|
||||||
G_OS="linux"
|
|
||||||
G_CCOMPILER="aarch64-linux-gnu-gcc"
|
|
||||||
G_CPPCOMPILER="aarch64-linux-gnu-g++"
|
|
||||||
G_CROSS="aarch64-linux-gnu"
|
|
||||||
G_LUAPLAT="posix"
|
|
||||||
G_ARCH="aarch64"
|
|
||||||
;;
|
|
||||||
|
|
||||||
linux)
|
linux)
|
||||||
G_OS="linux"
|
G_OS="linux"
|
||||||
|
G_CROSS="x86_64-linux-gnu"
|
||||||
G_CCOMPILER="gcc"
|
G_CCOMPILER="gcc"
|
||||||
G_CPPCOMPILER="g++"
|
G_CPPCOMPILER="g++"
|
||||||
G_CROSS="x86_64-linux-gnu"
|
|
||||||
G_LUAPLAT="linux"
|
G_LUAPLAT="linux"
|
||||||
G_ARCH="x86_64"
|
G_ARCH="x86_64"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw)
|
mingw)
|
||||||
G_OS="mingw32"
|
G_OS="mingw32"
|
||||||
G_CCOMPILER="x86_64-w64-mingw32-gcc"
|
|
||||||
G_CPPCOMPILER="x86_64-w64-mingw32-g++"
|
|
||||||
G_CROSS="x86_64-w64-mingw32"
|
G_CROSS="x86_64-w64-mingw32"
|
||||||
|
G_CCOMPILER="${G_CROSS}-gcc"
|
||||||
|
G_CPPCOMPILER="${G_CROSS}-g++"
|
||||||
G_LUAPLAT="generic"
|
G_LUAPLAT="generic"
|
||||||
G_ARCH="x86_64"
|
G_ARCH="x86_64"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
mac)
|
||||||
|
G_OS="mac"
|
||||||
|
G_CROSS="x86_64-apple-darwin15"
|
||||||
|
G_CCOMPILER="o64-clang"
|
||||||
|
G_CPPCOMPILER="o64-clang++"
|
||||||
|
G_LUAPLAT="generic"
|
||||||
|
G_ARCH="x86_64"
|
||||||
|
# ***HACK*** for macOS
|
||||||
|
export RANLIB=${G_CROSS}-ranlib
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
|
165
singe/singe.c
165
singe/singe.c
|
@ -44,11 +44,11 @@
|
||||||
|
|
||||||
#define AUDIO_MAX_VOLUME 63
|
#define AUDIO_MAX_VOLUME 63
|
||||||
#define MAX_TITLE_LENGTH 1024
|
#define MAX_TITLE_LENGTH 1024
|
||||||
#define MAX_MICE 128
|
#define MAX_MICE 4
|
||||||
#define SCROLLWHEEL_DISPLAY_TICKS 100
|
#define MOUSE_AXIS_COUNT 2
|
||||||
#define NOMOUSE -1
|
#define MAX_CONTROLLERS 4
|
||||||
#define KEYBD_ARRAY_SIZE 15
|
#define CONTROLLER_AXIS_COUNT 6
|
||||||
#define MOUSE_ARRAY_SIZE 6
|
#define AXIS_COUNT (MAX_CONTROLLERS * CONTROLLER_AXIS_COUNT + MAX_MICE * MOUSE_AXIS_COUNT)
|
||||||
|
|
||||||
|
|
||||||
typedef struct MouseS {
|
typedef struct MouseS {
|
||||||
|
@ -118,7 +118,37 @@ enum {
|
||||||
LDP_SEARCHING,
|
LDP_SEARCHING,
|
||||||
LDP_STOPPED,
|
LDP_STOPPED,
|
||||||
LDP_PLAYING,
|
LDP_PLAYING,
|
||||||
LDP_PAUSE,
|
LDP_PAUSE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
// Index into _controlMappings array
|
||||||
|
INPUT_UP = 0,
|
||||||
|
INPUT_LEFT,
|
||||||
|
INPUT_DOWN,
|
||||||
|
INPUT_RIGHT,
|
||||||
|
INPUT_1P_START,
|
||||||
|
INPUT_2P_START,
|
||||||
|
INPUT_ACTION_1,
|
||||||
|
INPUT_ACTION_2,
|
||||||
|
INPUT_ACTION_3,
|
||||||
|
INPUT_1P_COIN,
|
||||||
|
INPUT_2P_COIN,
|
||||||
|
INPUT_SKILL_EASY,
|
||||||
|
INPUT_SKILL_MEDIUM,
|
||||||
|
INPUT_SKILL_HARD,
|
||||||
|
INPUT_SERVICE,
|
||||||
|
INPUT_TEST_MODE,
|
||||||
|
INPUT_RESET_CPU,
|
||||||
|
INPUT_SCREENSHOT,
|
||||||
|
INPUT_QUIT,
|
||||||
|
INPUT_PAUSE,
|
||||||
|
INPUT_CONSOLE,
|
||||||
|
// Added in Singe 2.x
|
||||||
|
INPUT_ACTION_4,
|
||||||
|
INPUT_TILT,
|
||||||
|
INPUT_GRAB,
|
||||||
|
INPUT_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,6 +199,7 @@ static int32_t _videoHandle = -1;
|
||||||
static int32_t _fontQuality = 1;
|
static int32_t _fontQuality = 1;
|
||||||
static int32_t _mouseMode = MOUSE_SINGLE;
|
static int32_t _mouseMode = MOUSE_SINGLE;
|
||||||
static int32_t _mouseCount = 0;
|
static int32_t _mouseCount = 0;
|
||||||
|
static int32_t _axisCache[AXIS_COUNT];
|
||||||
static double _overlayScaleX = 1; // Difference between overlay and video
|
static double _overlayScaleX = 1; // Difference between overlay and video
|
||||||
static double _overlayScaleY = 1; // Difference between overlay and video
|
static double _overlayScaleY = 1; // Difference between overlay and video
|
||||||
static bool _pauseState = false; // by RDG2010
|
static bool _pauseState = false; // by RDG2010
|
||||||
|
@ -184,36 +215,6 @@ static SoundT *_soundList = NULL;
|
||||||
static FontT *_fontList = NULL;
|
static FontT *_fontList = NULL;
|
||||||
static FontT *_fontCurrent = NULL;
|
static FontT *_fontCurrent = NULL;
|
||||||
|
|
||||||
|
|
||||||
// Index into _controlMappings array
|
|
||||||
#define INPUT_UP 0
|
|
||||||
#define INPUT_LEFT 1
|
|
||||||
#define INPUT_DOWN 2
|
|
||||||
#define INPUT_RIGHT 3
|
|
||||||
#define INPUT_1P_START 4
|
|
||||||
#define INPUT_2P_START 5
|
|
||||||
#define INPUT_ACTION_1 6
|
|
||||||
#define INPUT_ACTION_2 7
|
|
||||||
#define INPUT_ACTION_3 8
|
|
||||||
#define INPUT_1P_COIN 9
|
|
||||||
#define INPUT_2P_COIN 10
|
|
||||||
#define INPUT_SKILL_EASY 11
|
|
||||||
#define INPUT_SKILL_MEDIUM 12
|
|
||||||
#define INPUT_SKILL_HARD 13
|
|
||||||
#define INPUT_SERVICE 14
|
|
||||||
#define INPUT_TEST_MODE 15
|
|
||||||
#define INPUT_RESET_CPU 16
|
|
||||||
#define INPUT_SCREENSHOT 17
|
|
||||||
#define INPUT_QUIT 18
|
|
||||||
#define INPUT_PAUSE 19
|
|
||||||
#define INPUT_CONSOLE 20
|
|
||||||
// Added in Singe 2.x
|
|
||||||
#define INPUT_ACTION_4 21
|
|
||||||
#define INPUT_TILT 22
|
|
||||||
#define INPUT_GRAB 23
|
|
||||||
#define INPUT_COUNT 24
|
|
||||||
|
|
||||||
|
|
||||||
static MappingT _controlMappings[] = {
|
static MappingT _controlMappings[] = {
|
||||||
{ "INPUT_UP", 0, 0, NULL },
|
{ "INPUT_UP", 0, 0, NULL },
|
||||||
{ "INPUT_LEFT", 1, 0, NULL },
|
{ "INPUT_LEFT", 1, 0, NULL },
|
||||||
|
@ -244,6 +245,7 @@ static MappingT _controlMappings[] = {
|
||||||
|
|
||||||
int32_t apiColorBackground(lua_State *L);
|
int32_t apiColorBackground(lua_State *L);
|
||||||
int32_t apiColorForeground(lua_State *L);
|
int32_t apiColorForeground(lua_State *L);
|
||||||
|
int32_t apiControllerGetAxis(lua_State *L);
|
||||||
int32_t apiDaphneGetHeight(lua_State *L);
|
int32_t apiDaphneGetHeight(lua_State *L);
|
||||||
int32_t apiDaphneGetWidth(lua_State *L);
|
int32_t apiDaphneGetWidth(lua_State *L);
|
||||||
int32_t apiDaphneScreenshot(lua_State *L);
|
int32_t apiDaphneScreenshot(lua_State *L);
|
||||||
|
@ -269,6 +271,7 @@ int32_t apiFontPrint32_t(lua_State *L);
|
||||||
int32_t apiFontQuality(lua_State *L);
|
int32_t apiFontQuality(lua_State *L);
|
||||||
int32_t apiFontSelect(lua_State *L);
|
int32_t apiFontSelect(lua_State *L);
|
||||||
int32_t apiFontToSprite(lua_State *L);
|
int32_t apiFontToSprite(lua_State *L);
|
||||||
|
int32_t apiMouseGetPosition(lua_State *L);
|
||||||
int32_t apiOverlayClear(lua_State *L);
|
int32_t apiOverlayClear(lua_State *L);
|
||||||
int32_t apiOverlayGetHeight(lua_State *L);
|
int32_t apiOverlayGetHeight(lua_State *L);
|
||||||
int32_t apiOverlayGetWidth(lua_State *L);
|
int32_t apiOverlayGetWidth(lua_State *L);
|
||||||
|
@ -395,6 +398,39 @@ int32_t apiColorForeground(lua_State *L) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32_t apiControllerGetAxis(lua_State *L) {
|
||||||
|
int32_t n = lua_gettop(L);
|
||||||
|
int32_t c = 0;
|
||||||
|
int32_t a = 0;
|
||||||
|
int32_t v = 0;
|
||||||
|
double d = 0;
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
if (n == 2) {
|
||||||
|
if (lua_isnumber(L, 1)) {
|
||||||
|
if (lua_isnumber(L, 2)) {
|
||||||
|
d = lua_tonumber(L, 1); c = (int32_t)d;
|
||||||
|
d = lua_tonumber(L, 2); a = (int32_t)d;
|
||||||
|
if ((c < 0) || (c >= MAX_CONTROLLERS)) luaDie(L, "controllerGetAxis", "Invalid controller index: %d", c);
|
||||||
|
if ((a < 0) || (a >= CONTROLLER_AXIS_COUNT)) luaDie(L, "controllerGetAxis", "Invalid controller axis: %d", a);
|
||||||
|
v = _axisCache[c * CONTROLLER_AXIS_COUNT + a];
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
luaTrace(L, "controllerGetAxis", "%d %d %d", c, a, v);
|
||||||
|
lua_pushinteger(L, v);
|
||||||
|
} else {
|
||||||
|
luaTrace(L, "controllerGetAxis", "Failed!");
|
||||||
|
lua_pushinteger(L, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t apiDaphneGetHeight(lua_State *L) {
|
int32_t apiDaphneGetHeight(lua_State *L) {
|
||||||
int32_t y;
|
int32_t y;
|
||||||
SDL_GetWindowSize(_window, NULL, &y);
|
SDL_GetWindowSize(_window, NULL, &y);
|
||||||
|
@ -1578,6 +1614,38 @@ int32_t apiMouseSetMode(lua_State *L) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32_t apiMouseGetPosition(lua_State *L) {
|
||||||
|
int32_t n = lua_gettop(L);
|
||||||
|
int32_t m = 0;
|
||||||
|
int32_t x = 0;
|
||||||
|
int32_t y = 0;
|
||||||
|
double d = 0;
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
if (n == 1) {
|
||||||
|
if (lua_isnumber(L, 1)) {
|
||||||
|
d = lua_tonumber(L, 1); m = (int32_t)d;
|
||||||
|
if ((m < 0) || (m >= MAX_MICE)) luaDie(L, "apiMouseGetPosition", "Invalid mouse index: %d", m);
|
||||||
|
x = _axisCache[MAX_CONTROLLERS * CONTROLLER_AXIS_COUNT + m * MOUSE_AXIS_COUNT];
|
||||||
|
y = _axisCache[MAX_CONTROLLERS * CONTROLLER_AXIS_COUNT + m * MOUSE_AXIS_COUNT + 1];
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
luaTrace(L, "apiMouseGetPosition", "%d %d %d", m, x, y);
|
||||||
|
lua_pushinteger(L, x);
|
||||||
|
lua_pushinteger(L, y);
|
||||||
|
} else {
|
||||||
|
luaTrace(L, "apiMouseGetPosition", "Failed!");
|
||||||
|
lua_pushinteger(L, -1);
|
||||||
|
lua_pushinteger(L, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t apiMouseHowMany(lua_State *L) {
|
int32_t apiMouseHowMany(lua_State *L) {
|
||||||
luaTrace(L, "mouseHowMany", "%d", _mouseCount);
|
luaTrace(L, "mouseHowMany", "%d", _mouseCount);
|
||||||
lua_pushinteger(L, _mouseCount);
|
lua_pushinteger(L, _mouseCount);
|
||||||
|
@ -2274,6 +2342,8 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
lua_register(_luaContext, "colorBackground", apiColorBackground);
|
lua_register(_luaContext, "colorBackground", apiColorBackground);
|
||||||
lua_register(_luaContext, "colorForeground", apiColorForeground);
|
lua_register(_luaContext, "colorForeground", apiColorForeground);
|
||||||
|
|
||||||
|
lua_register(_luaContext, "controllerGetAxis", apiControllerGetAxis);
|
||||||
|
|
||||||
lua_register(_luaContext, "daphneGetHeight", apiDaphneGetHeight);
|
lua_register(_luaContext, "daphneGetHeight", apiDaphneGetHeight);
|
||||||
lua_register(_luaContext, "daphneGetWidth", apiDaphneGetWidth);
|
lua_register(_luaContext, "daphneGetWidth", apiDaphneGetWidth);
|
||||||
lua_register(_luaContext, "daphneScreenshot", apiDaphneScreenshot);
|
lua_register(_luaContext, "daphneScreenshot", apiDaphneScreenshot);
|
||||||
|
@ -2303,6 +2373,8 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
lua_register(_luaContext, "fontSelect", apiFontSelect);
|
lua_register(_luaContext, "fontSelect", apiFontSelect);
|
||||||
lua_register(_luaContext, "fontToSprite", apiFontToSprite);
|
lua_register(_luaContext, "fontToSprite", apiFontToSprite);
|
||||||
|
|
||||||
|
lua_register(_luaContext, "mouseGetPosition", apiMouseGetPosition);
|
||||||
|
|
||||||
lua_register(_luaContext, "overlayClear", apiOverlayClear);
|
lua_register(_luaContext, "overlayClear", apiOverlayClear);
|
||||||
lua_register(_luaContext, "overlayGetHeight", apiOverlayGetHeight);
|
lua_register(_luaContext, "overlayGetHeight", apiOverlayGetHeight);
|
||||||
lua_register(_luaContext, "overlayGetWidth", apiOverlayGetWidth);
|
lua_register(_luaContext, "overlayGetWidth", apiOverlayGetWidth);
|
||||||
|
@ -2477,6 +2549,11 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
SDL_SetWindowGrab(_window, SDL_TRUE);
|
SDL_SetWindowGrab(_window, SDL_TRUE);
|
||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
|
|
||||||
|
// Clear axis cache
|
||||||
|
for (x=0; x<AXIS_COUNT; x++) {
|
||||||
|
_axisCache[x] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Controllers are started by the event loop
|
// Controllers are started by the event loop
|
||||||
|
|
||||||
// Set volume
|
// Set volume
|
||||||
|
@ -2523,6 +2600,10 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
processKey(true, 0, x);
|
processKey(true, 0, x);
|
||||||
processKey(false, 0, x);
|
processKey(false, 0, x);
|
||||||
}
|
}
|
||||||
|
// Remember this change
|
||||||
|
_axisCache[event.caxis.which * 2 + event.caxis.axis] = event.caxis.value;
|
||||||
|
// Fire analog event
|
||||||
|
callLua("onControllerMoved", "iii", event.caxis.axis, event.caxis.value, event.caxis.which);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_CONTROLLERBUTTONDOWN:
|
case SDL_CONTROLLERBUTTONDOWN:
|
||||||
|
@ -2553,6 +2634,10 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
y = (int32_t)(event.motion.y * _overlayScaleY);
|
y = (int32_t)(event.motion.y * _overlayScaleY);
|
||||||
xr = (int32_t)(event.motion.xrel * _overlayScaleX);
|
xr = (int32_t)(event.motion.xrel * _overlayScaleX);
|
||||||
yr = (int32_t)(event.motion.yrel * _overlayScaleY);
|
yr = (int32_t)(event.motion.yrel * _overlayScaleY);
|
||||||
|
// Remember this change
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2] = x;
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2 + 1] = y;
|
||||||
|
// Fire event
|
||||||
callLua("onMouseMoved", "iiiii", x, y, xr, yr, 0);
|
callLua("onMouseMoved", "iiiii", x, y, xr, yr, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2631,6 +2716,10 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
y = (int32_t)(mouse->y * _overlayScaleY);
|
y = (int32_t)(mouse->y * _overlayScaleY);
|
||||||
xr = (int32_t)(mouse->relx * _overlayScaleX);
|
xr = (int32_t)(mouse->relx * _overlayScaleX);
|
||||||
yr = (int32_t)(mouse->relx * _overlayScaleY);
|
yr = (int32_t)(mouse->relx * _overlayScaleY);
|
||||||
|
// Remember this change
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2 + mouseEvent.device * 2] = x;
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2 + mouseEvent.device * 2 + 1] = y;
|
||||||
|
// Fire event
|
||||||
callLua("onMouseMoved", "iiiii", x, y, xr, yr, mouseEvent.device);
|
callLua("onMouseMoved", "iiiii", x, y, xr, yr, mouseEvent.device);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2649,6 +2738,10 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
||||||
xr = (int32_t)(mouse->relx * _overlayScaleX);
|
xr = (int32_t)(mouse->relx * _overlayScaleX);
|
||||||
yr = (int32_t)(mouse->relx * _overlayScaleY);
|
yr = (int32_t)(mouse->relx * _overlayScaleY);
|
||||||
//utilSay("Mouse %d: Absolute %d, %d", mouseEvent.device, x, y);
|
//utilSay("Mouse %d: Absolute %d, %d", mouseEvent.device, x, y);
|
||||||
|
// Remember this change
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2 + mouseEvent.device * 2] = x;
|
||||||
|
_axisCache[MAX_CONTROLLERS * 2 + mouseEvent.device * 2 + 1] = y;
|
||||||
|
// Fire event
|
||||||
callLua("onMouseMoved", "iiiii", x, y, xr, yr, mouseEvent.device);
|
callLua("onMouseMoved", "iiiii", x, y, xr, yr, mouseEvent.device);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue