diff --git a/src/Game.c b/src/Game.c index ab05833cc..f0699cfdf 100644 --- a/src/Game.c +++ b/src/Game.c @@ -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); diff --git a/src/Graphics_WiiU.c b/src/Graphics_WiiU.c index ed8ba6669..8a3d343a1 100644 --- a/src/Graphics_WiiU.c +++ b/src/Graphics_WiiU.c @@ -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, diff --git a/src/InputHandler.c b/src/InputHandler.c index 2ae75206f..73553f9a0 100644 --- a/src/InputHandler.c +++ b/src/InputHandler.c @@ -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; diff --git a/src/InputHandler.h b/src/InputHandler.h index 85d255403..344fe7cd9 100644 --- a/src/InputHandler.h +++ b/src/InputHandler.h @@ -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); diff --git a/src/Platform_WiiU.c b/src/Platform_WiiU.c index 091b3bbf2..4dd453d47 100644 --- a/src/Platform_WiiU.c +++ b/src/Platform_WiiU.c @@ -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) {