parent
2c6b8eaa4c
commit
1e40bacfb7
@ -0,0 +1,11 @@
|
||||
|
||||
Core:
|
||||
☐ Add log settings to the state file
|
||||
|
||||
|
||||
Graphics:
|
||||
☐ Dear ImGui class with basic initialization
|
||||
☐ Decide on a font/text rendering system
|
||||
|
||||
Input:
|
||||
☐ Port over the Element2D input system and adust it to use glfw
|
||||
@ -0,0 +1,44 @@
|
||||
/******************************************************************************
|
||||
* File - main.cpp
|
||||
* Author - Joey Pollack
|
||||
* Date - 2021/09/03 (y/m/d)
|
||||
* Mod Date - 2021/09/03 (y/m/d)
|
||||
* Description - Main entry-point for Lunarium
|
||||
******************************************************************************/
|
||||
|
||||
#include <core/core.h>
|
||||
#include <utils/logger.h>
|
||||
#include <utils/helpers.h>
|
||||
#include <iostream>
|
||||
#include <filesystem>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
// Switch the currrent working directory to the directory
|
||||
// containing the lunarium.exe file because the data and state
|
||||
// file should be in that location
|
||||
std::string path = argv[0];
|
||||
path = lunarium::String::TrimFileNameFromPath(path);
|
||||
std::filesystem::current_path(path);
|
||||
|
||||
// All log messages will go to stdout
|
||||
lunarium::Logger::GetInstance()->AddListener(new lunarium::StandardListener);
|
||||
|
||||
lunarium::Core& core = lunarium::Core::GetInstance();
|
||||
core.Initialize(argc, argv);
|
||||
|
||||
if (!core.IsInit())
|
||||
{
|
||||
std::cout << "\nFailed to initialize the engine core.";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cout << "\nEngine core successfully initialized!";
|
||||
|
||||
core.RunGameLoop();
|
||||
|
||||
core.Shutdown();
|
||||
lunarium::Logger::GetInstance()->FreeAllListeners();
|
||||
lunarium::Logger::FreeInstance();
|
||||
return 0;
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
/******************************************************************************
|
||||
* File - FrameCounter.cpp
|
||||
* Author - Joey Pollack
|
||||
* Date - 2021/09/03 (y/m/d)
|
||||
* Mod Date - 2021/09/03 (y/m/d)
|
||||
* Description - Tracks frame statistics
|
||||
******************************************************************************/
|
||||
|
||||
#include "FrameCounter.h"
|
||||
|
||||
namespace lunarium
|
||||
{
|
||||
void FrameCounter::Reset(bool minimalTracking)
|
||||
{
|
||||
// Zero out the struct
|
||||
memset(&mFrameData, 0, sizeof(FrameData));
|
||||
mFrameData.LowestFPS = 10000;
|
||||
mbMinimalTracking = minimalTracking;
|
||||
mSecondTimer = 0.0;
|
||||
mTimer.Reset();
|
||||
}
|
||||
|
||||
void FrameCounter::NewFrame()
|
||||
{
|
||||
double now = mTimer.GetElapsedSeconds();
|
||||
mSecondTimer += now;
|
||||
mFPSCount++;
|
||||
mFrameData.NumFrames++;
|
||||
mFrameData.TotalRunTime += now;
|
||||
mFrameData.LastFrameTime = now;
|
||||
|
||||
if (mSecondTimer >= 1.0)
|
||||
{
|
||||
mFrameData.CurrentFPS = mFPSCount;
|
||||
mFPSCount = 0;
|
||||
mSecondTimer = 0.0;
|
||||
}
|
||||
|
||||
if (!mbMinimalTracking)
|
||||
{
|
||||
if (mFrameData.CurrentFPS > mFrameData.HighestFPS)
|
||||
{
|
||||
mFrameData.HighestFPS = mFrameData.CurrentFPS;
|
||||
}
|
||||
|
||||
if (mFrameData.CurrentFPS < mFrameData.LowestFPS)
|
||||
{
|
||||
mFrameData.LowestFPS = mFrameData.CurrentFPS;
|
||||
}
|
||||
|
||||
mFrameData.AverageFrameTime = mFrameData.TotalRunTime / mFrameData.NumFrames;
|
||||
mFrameData.AverageFPS = mFrameData.NumFrames / mFrameData.TotalRunTime; // NOTE: Not 100% sure this is correct
|
||||
}
|
||||
|
||||
mTimer.Reset();
|
||||
}
|
||||
|
||||
const FrameData& FrameCounter::GetFrameData() const
|
||||
{
|
||||
return mFrameData;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
/******************************************************************************
|
||||
* File - FrameCounter.h
|
||||
* Author - Joey Pollack
|
||||
* Date - 2021/09/03 (y/m/d)
|
||||
* Mod Date - 2021/09/03 (y/m/d)
|
||||
* Description - Tracks frame statistics
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef FRAME_COUNTER_H_
|
||||
#define FRAME_COUNTER_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include "highResTimer.h"
|
||||
|
||||
namespace lunarium
|
||||
{
|
||||
struct FrameData
|
||||
{
|
||||
uint64_t NumFrames;
|
||||
double TotalRunTime;
|
||||
double AverageFrameTime;
|
||||
double LastFrameTime;
|
||||
uint32_t CurrentFPS;
|
||||
uint32_t AverageFPS;
|
||||
uint32_t LowestFPS;
|
||||
uint32_t HighestFPS;
|
||||
};
|
||||
|
||||
class FrameCounter
|
||||
{
|
||||
public:
|
||||
void Reset(bool minimalTracking = false);
|
||||
void NewFrame();
|
||||
|
||||
const FrameData& GetFrameData() const;
|
||||
|
||||
private:
|
||||
bool mbMinimalTracking; // If true will only track basic data
|
||||
FrameData mFrameData;
|
||||
HighResTimer mTimer;
|
||||
double mSecondTimer;
|
||||
int mFPSCount;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
#endif // FRAME_COUNTER_H_
|
||||
Loading…
Reference in New Issue