From c4e8729034fc09ed071a34ef8860122888b6cd9b Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 20 Feb 2024 21:04:24 +1100 Subject: [PATCH] Separate event for controller movement from pointer raw movement --- src/Camera.c | 1 + src/Event.c | 3 +++ src/Event.h | 4 ++++ src/Window_3DS.c | 2 +- src/Window_Dreamcast.c | 2 +- src/Window_GCWii.c | 4 ++-- src/Window_N64.c | 2 +- src/Window_PS2.c | 2 +- src/Window_PS3.c | 2 +- src/Window_PSP.c | 2 +- src/Window_PSVita.c | 2 +- src/Window_Web.c | 2 +- src/Window_Xbox.c | 2 +- 13 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Camera.c b/src/Camera.c index e5b81b985..188f5b946 100644 --- a/src/Camera.c +++ b/src/Camera.c @@ -316,6 +316,7 @@ static void OnInit(void) { Camera.Active = &cam_FirstPerson; Event_Register_(&PointerEvents.RawMoved, NULL, OnRawMovement); + Event_Register_(&ControllerEvents.RawMoved, NULL, OnRawMovement); Event_Register_(&UserEvents.HackPermsChanged, NULL, OnHacksChanged); #ifdef CC_BUILD_WIN diff --git a/src/Event.c b/src/Event.c index b4a494dcf..8f0981753 100644 --- a/src/Event.c +++ b/src/Event.c @@ -13,6 +13,7 @@ struct _ChatEventsList ChatEvents; struct _WindowEventsList WindowEvents; struct _InputEventsList InputEvents; struct _PointerEventsList PointerEvents; +struct _ControllerEventsList ControllerEvents; struct _NetEventsList NetEvents; void Event_Register(struct Event_Void* handlers, void* obj, Event_Void_Callback handler) { @@ -106,6 +107,8 @@ void Event_UnregisterAll(void) { PointerEvents.Down.Count = 0; PointerEvents.Up.Count = 0; PointerEvents.RawMoved.Count = 0; + + ControllerEvents.RawMoved.Count = 0; NetEvents.Connected.Count = 0; NetEvents.Disconnected.Count = 0; diff --git a/src/Event.h b/src/Event.h index b248a6d21..9440063c8 100644 --- a/src/Event.h +++ b/src/Event.h @@ -193,6 +193,10 @@ CC_VAR extern struct _PointerEventsList { struct Event_RawMove RawMoved; /* Raw pointer position changed (Arg is delta) */ } PointerEvents; +CC_VAR extern struct _ControllerEventsList { + struct Event_RawMove RawMoved; /* Raw analog controller movement (Arg is delta) */ +} ControllerEvents; + CC_VAR extern struct _NetEventsList { struct Event_Void Connected; /* Connection to a server was established */ struct Event_Void Disconnected; /* Connection to the server was lost */ diff --git a/src/Window_3DS.c b/src/Window_3DS.c index d3d160413..ad5bb88a6 100644 --- a/src/Window_3DS.c +++ b/src/Window_3DS.c @@ -115,7 +115,7 @@ static void ProcessJoystickInput(circlePosition* pos, double delta) { if (Math_AbsI(pos->dx) <= 16) pos->dx = 0; if (Math_AbsI(pos->dy) <= 16) pos->dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, pos->dx * scale, -pos->dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, pos->dx * scale, -pos->dy * scale); } static void ProcessTouchInput(int mods) { diff --git a/src/Window_Dreamcast.c b/src/Window_Dreamcast.c index 541d0c054..0a8670031 100644 --- a/src/Window_Dreamcast.c +++ b/src/Window_Dreamcast.c @@ -201,7 +201,7 @@ static void HandleController(cont_state_t* state, double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, dy * scale); } } diff --git a/src/Window_GCWii.c b/src/Window_GCWii.c index 3e5272f4a..e05826e2c 100644 --- a/src/Window_GCWii.c +++ b/src/Window_GCWii.c @@ -127,7 +127,7 @@ static void ProcessPAD_RightJoystick(double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, -dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, -dy * scale); } static void ProcessPAD_Buttons(void) { @@ -317,7 +317,7 @@ static void ProcessClassic_RightJoystick(struct joystick_t* js, double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, -dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, -dy * scale); } static void ProcessClassicButtons(int mods) { diff --git a/src/Window_N64.c b/src/Window_N64.c index 2a6502637..95633005d 100644 --- a/src/Window_N64.c +++ b/src/Window_N64.c @@ -104,7 +104,7 @@ static void ProcessAnalogInput(joypad_inputs_t* inputs, double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, -dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, -dy * scale); } void Window_ProcessEvents(double delta) { diff --git a/src/Window_PS2.c b/src/Window_PS2.c index b286efc88..d15d93d8d 100644 --- a/src/Window_PS2.c +++ b/src/Window_PS2.c @@ -125,7 +125,7 @@ static void HandleJoystick_Right(int x, int y, double delta) { if (Math_AbsI(x) <= 8) x = 0; if (Math_AbsI(y) <= 8) y = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, x * scale, y * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, x * scale, y * scale); } static void ProcessPadInput(double delta, struct padButtonStatus* pad) { diff --git a/src/Window_PS3.c b/src/Window_PS3.c index bb2999877..346ee6daa 100644 --- a/src/Window_PS3.c +++ b/src/Window_PS3.c @@ -277,7 +277,7 @@ static void HandleJoystick_Right(int x, int y, double delta) { if (Math_AbsI(x) <= 32) x = 0; if (Math_AbsI(y) <= 32) y = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, x * scale, y * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, x * scale, y * scale); } static void ProcessPadInput(double delta, padData* pad) { diff --git a/src/Window_PSP.c b/src/Window_PSP.c index 621e86064..0710b1293 100644 --- a/src/Window_PSP.c +++ b/src/Window_PSP.c @@ -93,7 +93,7 @@ static void ProcessCircleInput(SceCtrlData* pad, double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, dy * scale); } void Window_ProcessEvents(double delta) { diff --git a/src/Window_PSVita.c b/src/Window_PSVita.c index 630030dc2..2f0638921 100644 --- a/src/Window_PSVita.c +++ b/src/Window_PSVita.c @@ -122,7 +122,7 @@ static void ProcessRCircleInput(SceCtrlData* pad, double delta) { if (Math_AbsI(dx) <= 8) dx = 0; if (Math_AbsI(dy) <= 8) dy = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, dx * scale, dy * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, dx * scale, dy * scale); } static void ProcessTouchPress(int x, int y) { diff --git a/src/Window_Web.c b/src/Window_Web.c index 9afabd337..4f4e71931 100644 --- a/src/Window_Web.c +++ b/src/Window_Web.c @@ -561,7 +561,7 @@ static void ProcessGamepadCamera(float x, float y, double delta) { if (y >= -0.1 && y <= 0.1) y = 0; if (x == 0 && y == 0) return; - Event_RaiseRawMove(&PointerEvents.RawMoved, x * scale, y * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, x * scale, y * scale); } static void ProcessGamepadMovement(float x, float y) { diff --git a/src/Window_Xbox.c b/src/Window_Xbox.c index 8835f6fe2..e7b338a6b 100644 --- a/src/Window_Xbox.c +++ b/src/Window_Xbox.c @@ -156,7 +156,7 @@ static void HandleJoystick_Right(int x, int y, double delta) { if (Math_AbsI(x) <= 256) x = 0; if (Math_AbsI(y) <= 256) y = 0; - Event_RaiseRawMove(&PointerEvents.RawMoved, x * scale, -y * scale); + Event_RaiseRawMove(&ControllerEvents.RawMoved, x * scale, -y * scale); } void Window_ProcessEvents(double delta) {