Fixed the weird stutter and added fps in title bar
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <Core/Common/CoreTypes.h>
|
||||
#include <Core/Common/NonNullPtr.h>
|
||||
#include <Core/Common/String.h>
|
||||
#include <Juliet.h>
|
||||
|
||||
namespace Juliet
|
||||
@@ -16,4 +17,5 @@ namespace Juliet
|
||||
extern JULIET_API void HideWindow(NonNullPtr<Window> window);
|
||||
|
||||
extern JULIET_API WindowID GetWindowID(NonNullPtr<Window> window);
|
||||
extern JULIET_API void SetWindowTitle(NonNullPtr<Window> window, String title);
|
||||
} // namespace Juliet
|
||||
|
||||
@@ -149,6 +149,11 @@ namespace Juliet
|
||||
return window->ID;
|
||||
}
|
||||
|
||||
void SetWindowTitle(NonNullPtr<Window> window, String title)
|
||||
{
|
||||
g_CurrentDisplayDevice->SetWindowTitle(g_CurrentDisplayDevice, window, title);
|
||||
}
|
||||
|
||||
// Display Device Utils. Not exposed in the API
|
||||
DisplayDevice* GetDisplayDevice()
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace Juliet
|
||||
void (*DestroyPlatformWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
void (*ShowWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
void (*HideWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
void (*SetWindowTitle)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window, String title);
|
||||
|
||||
// Events
|
||||
void (*PumpEvents)(NonNullPtr<DisplayDevice> self);
|
||||
|
||||
@@ -33,6 +33,7 @@ namespace Juliet::Win32
|
||||
device->DestroyPlatformWindow = DestroyPlatformWindow;
|
||||
device->ShowWindow = ShowWindow;
|
||||
device->HideWindow = HideWindow;
|
||||
device->SetWindowTitle = SetWindowTitle;
|
||||
|
||||
device->PumpEvents = PumpEvents;
|
||||
|
||||
|
||||
@@ -92,4 +92,13 @@ namespace Juliet::Win32
|
||||
auto& win32State = static_cast<Window32State&>(*window->State);
|
||||
::ShowWindow(win32State.Handle, SW_HIDE);
|
||||
}
|
||||
|
||||
void SetWindowTitle(NonNullPtr<DisplayDevice> /*self*/, NonNullPtr<Window> window, String title)
|
||||
{
|
||||
Assert(window);
|
||||
Assert(window->State);
|
||||
|
||||
auto& win32State = static_cast<Window32State&>(*window->State);
|
||||
SetWindowTextA(win32State.Handle, CStr(title));
|
||||
}
|
||||
} // namespace Juliet::Win32
|
||||
|
||||
@@ -25,4 +25,5 @@ namespace Juliet::Win32
|
||||
extern void DestroyPlatformWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
extern void ShowWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
extern void HideWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
|
||||
extern void SetWindowTitle(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window, String title);
|
||||
} // namespace Juliet::Win32
|
||||
|
||||
@@ -209,6 +209,22 @@ void JulietApplication::Update()
|
||||
lastTime = currentTime;
|
||||
|
||||
CameraTime += deltaTime;
|
||||
|
||||
static float fpsTimer = 0.0f;
|
||||
static int fpsFrames = 0;
|
||||
fpsTimer += deltaTime;
|
||||
fpsFrames++;
|
||||
if (fpsTimer >= 0.5f)
|
||||
{
|
||||
float fps = static_cast<float>(fpsFrames) / fpsTimer;
|
||||
float ms = (fpsTimer / static_cast<float>(fpsFrames)) * 1000.0f;
|
||||
char title[64];
|
||||
snprintf(title, sizeof(title), "Juliet | %.1f FPS | %.2f ms", static_cast<double>(fps), static_cast<double>(ms));
|
||||
SetWindowTitle(MainWindow, WrapString(title));
|
||||
fpsTimer = 0.0f;
|
||||
fpsFrames = 0;
|
||||
}
|
||||
|
||||
bool reloadShaders = false;
|
||||
static bool reloadShadersDebounce = false;
|
||||
|
||||
@@ -339,8 +355,8 @@ Camera JulietApplication::GetDebugCamera()
|
||||
|
||||
float radius = baseRadius;
|
||||
//* Uncomment for active zoom
|
||||
float zoomAmplitude = 10.0f; // Oscillate between 1.5m and 3.5m away
|
||||
float zoomSpeed = 0.8f;
|
||||
float zoomAmplitude = 15.0f;
|
||||
float zoomSpeed = 0.5f;
|
||||
radius = baseRadius + (sinf(time * zoomSpeed) * zoomAmplitude);
|
||||
//*/
|
||||
float zHeight = radius * 0.5f; // Keep a nice downward viewing angle
|
||||
|
||||
Reference in New Issue
Block a user