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