timeMS getTimeMS() { #if __S3E__ return (timeMS)s3eTimerGetUST(); #elif OXYGINE_SDL return SDL_GetTicks(); #elif EMSCRIPTEN static bool init = false; static struct timespec start_ts; if (!init) { init = true; clock_gettime(CLOCK_MONOTONIC, &start_ts); } struct timespec now; clock_gettime(CLOCK_MONOTONIC, &now); timeMS ticks = (now.tv_sec - start_ts.tv_sec) * 1000 + (now.tv_nsec - start_ts.tv_nsec) / 1000000; return ticks; #else log::warning("getTimeMS not implemented"); assert(0); #endif return 0; }
void ImGui_Marmalade_NewFrame() { if (!g_FontTexture) ImGui_Marmalade_CreateDeviceObjects(); ImGuiIO& io = ImGui::GetIO(); // Setup display size (every frame to accommodate for window resizing) int w = IwGxGetScreenWidth(), h = IwGxGetScreenHeight(); io.DisplaySize = ImVec2((float)w, (float)h); // For retina display or other situations where window coordinates are different from framebuffer coordinates. User storage only, presently not used by ImGui. io.DisplayFramebufferScale = g_scale; // Setup time step double current_time = s3eTimerGetUST() / 1000.0f; io.DeltaTime = g_Time > 0.0 ? (float)(current_time - g_Time) : (float)(1.0f/60.0f); g_Time = current_time; double mouse_x, mouse_y; mouse_x = s3ePointerGetX(); mouse_y = s3ePointerGetY(); io.MousePos = ImVec2((float)mouse_x/g_scale.x, (float)mouse_y/g_scale.y); // Mouse position in screen coordinates (set to -1,-1 if no mouse / on another screen, etc.) for (int i = 0; i < 3; i++) { io.MouseDown[i] = g_MousePressed[i] || s3ePointerGetState((s3ePointerButton)i) != S3E_POINTER_STATE_UP; // If a mouse press event came, always pass it as "mouse held this frame", so we don't miss click-release events that are shorter than 1 frame. g_MousePressed[i] = false; } io.MouseWheel = g_MouseWheel; g_MouseWheel = 0.0f; // TODO: Hide OS mouse cursor if ImGui is drawing it // s3ePointerSetInt(S3E_POINTER_HIDE_CURSOR,(io.MouseDrawCursor ? 0 : 1)); // Start the frame ImGui::NewFrame(); // Show/hide OSD keyboard if (io.WantTextInput) { // Some text input widget is active? if (!g_osdKeyboardEnabled) { g_osdKeyboardEnabled = true; s3eKeyboardSetInt(S3E_KEYBOARD_GET_CHAR, 1); // show OSD keyboard } } else { // No text input widget is active if (g_osdKeyboardEnabled) { g_osdKeyboardEnabled = false; s3eKeyboardSetInt(S3E_KEYBOARD_GET_CHAR, 0); // hide OSD keyboard } } }
timeMS getTimeMS() { #if __S3E__ return (timeMS)s3eTimerGetUST(); #elif EMSCRIPTEN return SDL_GetTicks(); #elif OXYGINE_SDL return SDL_GetTicks(); #else #pragma error "getTimeMS not implemented" #endif return 0; }