Avoid using doubles for input handler ticking

This commit is contained in:
UnknownShadow200 2025-03-09 12:38:28 +11:00
parent 47c4e91443
commit c892cfb5dc
5 changed files with 14 additions and 15 deletions

View File

@ -685,7 +685,7 @@ static CC_INLINE void Game_DrawFrame(float delta, float t) {
if (!Gui_GetBlocksWorld()) {
Camera.Active->GetPickedBlock(&Game_SelectedPos); /* TODO: only pick when necessary */
Camera_KeyLookUpdate(delta);
InputHandler_Tick();
InputHandler_Tick(delta);
if (Game_Anaglyph3D) {
Render3D_Anaglyph(delta, t);

View File

@ -50,7 +50,7 @@ static void CompileFetchShader(GX2FetchShader* shader, const GX2AttribStream* at
uint32_t size = GX2CalcFetchShaderSizeEx(numAttribs,
GX2_FETCH_SHADER_TESSELLATION_NONE,
GX2_TESSELLATION_MODE_DISCRETE);
void* program = MEMAllocFromDefaultHeapEx(size, GX2_SHADER_PROGRAM_ALIGNMENT); // TODO memalign
void* program = memalign(GX2_SHADER_PROGRAM_ALIGNMENT, size);
GX2InitFetchShaderEx(shader, program, numAttribs, attribs,
GX2_FETCH_SHADER_TESSELLATION_NONE,

View File

@ -28,7 +28,7 @@
static cc_bool input_buttonsDown[3];
static int input_pickingId = -1;
static double input_lastClick;
static float input_deltaAcc;
static float input_fovIndex = -1.0f;
#ifdef CC_BUILD_WEB
static cc_bool suppressEscape;
@ -273,7 +273,7 @@ static void MouseStateUpdate(int button, cc_bool pressed) {
}
static void MouseStatePress(int button) {
input_lastClick = Game.Time;
input_deltaAcc = 0;
input_pickingId = -1;
MouseStateUpdate(button, true);
}
@ -285,7 +285,7 @@ static void MouseStateRelease(int button) {
}
void InputHandler_OnScreensChanged(void) {
input_lastClick = Game.Time;
input_deltaAcc = 0;
input_pickingId = -1;
if (!Gui.InputGrab) return;
@ -456,19 +456,18 @@ static void InputHandler_PickBlock(void) {
#ifdef CC_BUILD_TOUCH
static cc_bool AnyBlockTouches(void);
#endif
void InputHandler_Tick(void) {
void InputHandler_Tick(float delta) {
cc_bool left, middle, right;
double now, delta;
input_deltaAcc += delta;
if (Gui.InputGrab) return;
now = Game.Time;
delta = now - input_lastClick;
if (delta < 0.2495) return; /* 4 times per second */
/* Only tick 4 times per second when held down */
if (input_deltaAcc < 0.2495f) return;
/* NOTE: 0.2495 is used instead of 0.25 to produce delta time */
/* values slightly closer to the old code which measured */
/* elapsed time using DateTime_CurrentUTC_MS() instead */
input_lastClick = now;
input_deltaAcc = 0;
left = input_buttonsDown[MOUSE_LEFT];
middle = input_buttonsDown[MOUSE_MIDDLE];
@ -785,10 +784,10 @@ static void OnPointerDown(void* obj, int idx) {
struct Screen* s;
int i, x, y, mask;
/* Always set last click time, otherwise quickly tapping */
/* Always reset held time, otherwise quickly tapping */
/* sometimes triggers a 'delete' in InputHandler_Tick, */
/* and then another 'delete' in CheckBlockTap. */
input_lastClick = Game.Time;
input_deltaAcc = 0;
#ifdef CC_BUILD_TOUCH
if (Input_TouchMode && !(touches[idx].type & TOUCH_TYPE_GUI)) return;

View File

@ -50,7 +50,7 @@ void StoredHotkeys_Add(int trigger, cc_uint8 modifiers, cc_bool moreInput, const
cc_bool InputHandler_SetFOV(int fov);
cc_bool Input_HandleMouseWheel(float delta);
void InputHandler_Tick(void);
void InputHandler_Tick(float delta);
void InputHandler_OnScreensChanged(void);

View File

@ -87,7 +87,7 @@ void DateTime_CurrentLocal(struct cc_datetime* t) {
*--------------------------------------------------------Stopwatch--------------------------------------------------------*
*#########################################################################################################################*/
cc_uint64 Stopwatch_Measure(void) {
return OSGetSystemTime(); // TODO OSGetSystemTick ??
return OSGetSystemTime();
}
cc_uint64 Stopwatch_ElapsedMicroseconds(cc_uint64 beg, cc_uint64 end) {