mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 18:15:28 -04:00
Don't keep track of mouse wheel position because we only ever care about the delta anyways
This commit is contained in:
parent
d167b227da
commit
cde36cc0f2
@ -125,7 +125,6 @@ void Key_Clear(void) {
|
||||
/*########################################################################################################################*
|
||||
*----------------------------------------------------------Mouse----------------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
float Mouse_Wheel;
|
||||
int Mouse_X, Mouse_Y;
|
||||
struct Pointer Pointers[INPUT_MAX_POINTERS];
|
||||
bool Input_RawMode, Input_TouchMode;
|
||||
@ -138,9 +137,7 @@ void Pointer_SetPressed(int idx, bool pressed) {
|
||||
}
|
||||
}
|
||||
|
||||
void Mouse_SetWheel(float wheel) {
|
||||
float delta = wheel - Mouse_Wheel;
|
||||
Mouse_Wheel = wheel;
|
||||
void Mouse_ScrollWheel(float delta) {
|
||||
Event_RaiseFloat(&InputEvents.Wheel, delta);
|
||||
}
|
||||
|
||||
|
@ -72,8 +72,6 @@ void Input_SetPressed(Key key, bool pressed);
|
||||
void Key_Clear(void);
|
||||
typedef int MouseButton;
|
||||
|
||||
/* Wheel position of the mouse. Use Mouse_SetWheel to change. */
|
||||
extern float Mouse_Wheel;
|
||||
/* Whether raw mouse/touch input is being listened for. */
|
||||
extern bool Input_RawMode;
|
||||
/* Whether touch input is being used. */
|
||||
@ -98,8 +96,8 @@ extern int Mouse_X, Mouse_Y;
|
||||
|
||||
/* Raises PointerEvents.Up or PointerEvents.Down. */
|
||||
void Pointer_SetPressed(int idx, bool pressed);
|
||||
/* Sets wheel position of the mouse, always raising InputEvents.Wheel. */
|
||||
void Mouse_SetWheel(float wheel);
|
||||
/* Raises InputEvents.Wheel with the given wheel delta. */
|
||||
void Mouse_ScrollWheel(float delta);
|
||||
/* Sets X and Y position of the given pointer, always raising PointerEvents.Moved. */
|
||||
void Pointer_SetPosition(int idx, int x, int y);
|
||||
|
||||
|
@ -1248,7 +1248,7 @@ static void Hex_Default(struct MenuInputDesc* d, String* value) {
|
||||
PackedCol_ToHex(value, d->meta.h.Default);
|
||||
}
|
||||
|
||||
const struct MenuInputVTABLE HexValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE HexInput_VTABLE = {
|
||||
Hex_Range, Hex_ValidChar, Hex_ValidString, Hex_ValidValue, Hex_Default
|
||||
};
|
||||
|
||||
@ -1275,7 +1275,7 @@ static void Int_Default(struct MenuInputDesc* d, String* value) {
|
||||
String_AppendInt(value, d->meta.i.Default);
|
||||
}
|
||||
|
||||
const struct MenuInputVTABLE IntValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE IntInput_VTABLE = {
|
||||
Int_Range, Int_ValidChar, Int_ValidString, Int_ValidValue, Int_Default
|
||||
};
|
||||
|
||||
@ -1284,7 +1284,7 @@ static void Seed_Range(struct MenuInputDesc* d, String* range) {
|
||||
}
|
||||
static void Seed_NoDefault(struct MenuInputDesc* d, String* value) { }
|
||||
|
||||
const struct MenuInputVTABLE SeedValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE SeedInput_VTABLE = {
|
||||
Seed_Range, Int_ValidChar, Int_ValidString, Int_ValidValue, Seed_NoDefault
|
||||
};
|
||||
|
||||
@ -1311,7 +1311,7 @@ static void Float_Default(struct MenuInputDesc* d, String* value) {
|
||||
String_AppendFloat(value, d->meta.f.Default, 3);
|
||||
}
|
||||
|
||||
const struct MenuInputVTABLE FloatValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE FloatInput_VTABLE = {
|
||||
Float_Range, Float_ValidChar, Float_ValidString, Float_ValidValue, Float_Default
|
||||
};
|
||||
|
||||
@ -1325,7 +1325,7 @@ static bool Path_ValidChar(struct MenuInputDesc* d, char c) {
|
||||
}
|
||||
static bool Path_ValidString(struct MenuInputDesc* d, const String* s) { return true; }
|
||||
|
||||
const struct MenuInputVTABLE PathValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE PathInput_VTABLE = {
|
||||
Path_Range, Path_ValidChar, Path_ValidString, Path_ValidString, Seed_NoDefault
|
||||
};
|
||||
|
||||
@ -1341,7 +1341,7 @@ static bool String_ValidString(struct MenuInputDesc* d, const String* s) {
|
||||
return s->length <= STRING_SIZE;
|
||||
}
|
||||
|
||||
const struct MenuInputVTABLE StringValidator_VTABLE = {
|
||||
const struct MenuInputVTABLE StringInput_VTABLE = {
|
||||
String_Range, String_ValidChar, String_ValidString, String_ValidString, Seed_NoDefault
|
||||
};
|
||||
|
||||
|
@ -157,20 +157,20 @@ struct MenuInputDesc {
|
||||
} meta;
|
||||
};
|
||||
|
||||
extern const struct MenuInputVTABLE HexValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE IntValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE SeedValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE FloatValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE PathValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE StringValidator_VTABLE;
|
||||
extern const struct MenuInputVTABLE HexInput_VTABLE;
|
||||
extern const struct MenuInputVTABLE IntInput_VTABLE;
|
||||
extern const struct MenuInputVTABLE SeedInput_VTABLE;
|
||||
extern const struct MenuInputVTABLE FloatInput_VTABLE;
|
||||
extern const struct MenuInputVTABLE PathInput_VTABLE;
|
||||
extern const struct MenuInputVTABLE StringInput_VTABLE;
|
||||
|
||||
#define MenuInput_Hex(v, def) v.VTABLE = &HexValidator_VTABLE; v.meta.h.Default = def;
|
||||
#define MenuInput_Int(v, lo, hi, def) v.VTABLE = &IntValidator_VTABLE; v.meta.i.Min = lo; v.meta.i.Max = hi; v.meta.i.Default = def;
|
||||
#define MenuInput_Seed(v) v.VTABLE = &SeedValidator_VTABLE; v.meta.i.Min = Int32_MinValue; v.meta.i.Max = Int32_MaxValue;
|
||||
#define MenuInput_Float(v, lo, hi, def) v.VTABLE = &FloatValidator_VTABLE; v.meta.f.Min = lo; v.meta.f.Max = hi; v.meta.f.Default = def;
|
||||
#define MenuInput_Path(v) v.VTABLE = &PathValidator_VTABLE;
|
||||
#define MenuInput_Hex(v, def) v.VTABLE = &HexInput_VTABLE; v.meta.h.Default = def;
|
||||
#define MenuInput_Int(v, lo, hi, def) v.VTABLE = &IntInput_VTABLE; v.meta.i.Min = lo; v.meta.i.Max = hi; v.meta.i.Default = def;
|
||||
#define MenuInput_Seed(v) v.VTABLE = &SeedInput_VTABLE; v.meta.i.Min = Int32_MinValue; v.meta.i.Max = Int32_MaxValue;
|
||||
#define MenuInput_Float(v, lo, hi, def) v.VTABLE = &FloatInput_VTABLE; v.meta.f.Min = lo; v.meta.f.Max = hi; v.meta.f.Default = def;
|
||||
#define MenuInput_Path(v) v.VTABLE = &PathInput_VTABLE;
|
||||
#define MenuInput_Enum(v, names, count) v.VTABLE = NULL; v.meta.e.Names = names; v.meta.e.Count = count;
|
||||
#define MenuInput_String(v) v.VTABLE = &StringValidator_VTABLE;
|
||||
#define MenuInput_String(v) v.VTABLE = &StringInput_VTABLE;
|
||||
|
||||
struct MenuInputWidget {
|
||||
struct InputWidget base;
|
||||
|
14
src/Window.c
14
src/Window.c
@ -222,7 +222,7 @@ static LRESULT CALLBACK Window_Procedure(HWND handle, UINT message, WPARAM wPara
|
||||
|
||||
case WM_MOUSEWHEEL:
|
||||
wheelDelta = ((short)HIWORD(wParam)) / (float)WHEEL_DELTA;
|
||||
Mouse_SetWheel(Mouse_Wheel + wheelDelta);
|
||||
Mouse_ScrollWheel(wheelDelta);
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
@ -1104,8 +1104,8 @@ void Window_ProcessEvents(void) {
|
||||
if (e.xbutton.button == 1) Input_SetPressed(KEY_LMOUSE, true);
|
||||
else if (e.xbutton.button == 2) Input_SetPressed(KEY_MMOUSE, true);
|
||||
else if (e.xbutton.button == 3) Input_SetPressed(KEY_RMOUSE, true);
|
||||
else if (e.xbutton.button == 4) Mouse_SetWheel(Mouse_Wheel + 1);
|
||||
else if (e.xbutton.button == 5) Mouse_SetWheel(Mouse_Wheel - 1);
|
||||
else if (e.xbutton.button == 4) Mouse_ScrollWheel(+1);
|
||||
else if (e.xbutton.button == 5) Mouse_ScrollWheel(-1);
|
||||
else if (e.xbutton.button == 6) Input_SetPressed(KEY_XBUTTON1, true);
|
||||
else if (e.xbutton.button == 7) Input_SetPressed(KEY_XBUTTON2, true);
|
||||
break;
|
||||
@ -1931,7 +1931,7 @@ static OSStatus Window_ProcessMouseEvent(EventRef inEvent) {
|
||||
res = GetEventParameter(inEvent, kEventParamMouseWheelDelta, typeSInt32,
|
||||
NULL, sizeof(SInt32), NULL, &delta);
|
||||
if (res) Logger_Abort2(res, "Getting mouse wheel delta");
|
||||
Mouse_SetWheel(Mouse_Wheel + delta);
|
||||
Mouse_ScrollWheel(delta);
|
||||
return 0;
|
||||
|
||||
case kEventMouseMoved:
|
||||
@ -2620,7 +2620,7 @@ void Window_ProcessEvents(void) {
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
Window_HandleMouseEvent(&e); break;
|
||||
case SDL_MOUSEWHEEL:
|
||||
Mouse_SetWheel(Mouse_Wheel + e.wheel.y);
|
||||
Mouse_ScrollWheel(e.wheel.y);
|
||||
break;
|
||||
case SDL_MOUSEMOTION:
|
||||
Pointer_SetPosition(0, e.motion.x, e.motion.y);
|
||||
@ -2767,7 +2767,7 @@ static void Window_CorrectFocus(void) {
|
||||
|
||||
static EM_BOOL Window_MouseWheel(int type, const EmscriptenWheelEvent* ev, void* data) {
|
||||
/* TODO: The scale factor isn't standardised.. is there a better way though? */
|
||||
Mouse_SetWheel(Mouse_Wheel - Math_Sign(ev->deltaY));
|
||||
Mouse_ScrollWheel(-Math_Sign(ev->deltaY));
|
||||
Window_CorrectFocus();
|
||||
return true;
|
||||
}
|
||||
@ -3813,7 +3813,7 @@ void Window_ProcessEvents(void) {
|
||||
break;
|
||||
|
||||
case 22: /* NSScrollWheel */
|
||||
Mouse_SetWheel(Mouse_Wheel + Send_CGFloat(ev, sel_registerName("deltaY")));
|
||||
Mouse_ScrollWheel(Send_CGFloat(ev, sel_registerName("deltaY")));
|
||||
break;
|
||||
|
||||
case 5: /* NSMouseMoved */
|
||||
|
Loading…
x
Reference in New Issue
Block a user