Added Time

This commit is contained in:
2026-01-17 17:08:22 +01:00
parent 53c7d564d7
commit 6b3e034cf5
8 changed files with 104 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
#pragma once
namespace TSE
{
class ITimeInterface
{
public:
virtual float GetTotalEllapsedTime() = 0;
virtual ~ITimeInterface() = default;
};
} // namespace TSE

View File

@@ -1,6 +1,7 @@
#include "IWindow.hpp"
#include "Debug.hpp"
#include "LuaStateHandler.hpp"
#include "Time.hpp"
TSE::IWindow* TSE::IWindow::lastWindow = nullptr;
@@ -10,6 +11,11 @@ bool TSE::IWindow::BaseInit() const
Debug::Init();
}
void TSE::IWindow::BaseUpdate() const
{
Time::Update();
}
TSE::IWindow::~IWindow()
{
Debug::Close();

View File

@@ -20,6 +20,7 @@ namespace TSE
virtual bool ShouldClose() const = 0;
bool BaseInit() const;
void BaseUpdate() const;
~IWindow();
};
} // namespace TSE

View File

@@ -0,0 +1,38 @@
#include "Time.hpp"
TSE::ITimeInterface* TSE::Time::timeInterface = nullptr;
float TSE::Time::DeltaTime = 0;
float TSE::Time::LastFrameTime = 0;
float TSE::Time::CurrentTime = 0;
void TSE::Time::Init(ITimeInterface *time)
{
Time::timeInterface = time;
}
void TSE::Time::Destroy()
{
delete(timeInterface);
}
float TSE::Time::deltaTime()
{
return DeltaTime;
}
float TSE::Time::currentTime()
{
return CurrentTime;
}
float TSE::Time::lastFrameTime()
{
return LastFrameTime;
}
void TSE::Time::Update()
{
LastFrameTime = CurrentTime;
CurrentTime = timeInterface->GetTotalEllapsedTime();
DeltaTime = CurrentTime - LastFrameTime;
}

View File

@@ -0,0 +1,23 @@
#pragma once
#include "interfaces/ITimeInterface.hpp"
namespace TSE
{
class Time
{
private:
static ITimeInterface* timeInterface;
static float LastFrameTime;
static float DeltaTime;
static float CurrentTime;
public:
static void Init(ITimeInterface* time);
static void Destroy();
static float deltaTime();
static float currentTime();
static float lastFrameTime();
static void Update();
};
} // namespace TSE

View File

@@ -0,0 +1,8 @@
#include "TimeInterfaceGlfw.hpp"
#include "GLFW/glfw3.h"
float TSE::GLFW::TimeInterfaceGlfw::GetTotalEllapsedTime()
{
return (float)glfwGetTime();
}

View File

@@ -0,0 +1,12 @@
#pragma once
#include "interfaces/ITimeInterface.hpp"
namespace TSE::GLFW
{
class TimeInterfaceGlfw : public ITimeInterface
{
public:
float GetTotalEllapsedTime() override;
};
} // namespace TSE::GLFW

View File

@@ -1,4 +1,6 @@
#include "WindowGlfw.hpp"
#include "utils/Time.hpp"
#include "TimeInterfaceGlfw.hpp"
#include "Debug.hpp"
TSE::GLFW::WindowGlfw::WindowGlfw(string _title, int _width, int _height, IRenderingBackend* backend)
@@ -36,6 +38,8 @@ bool TSE::GLFW::WindowGlfw::Init()
return false;
}
Time::Init(new TimeInterfaceGlfw());
renderingBackend->InitPreWindow();
glfwWindowHint(GLFW_FOCUSED, true);
@@ -118,6 +122,7 @@ void TSE::GLFW::WindowGlfw::Clear() const
void TSE::GLFW::WindowGlfw::Update() const
{
BaseUpdate();
glfwPollEvents();
renderingBackend->onUpdate();