hackily adding the event count to the graph
This commit is contained in:
@@ -72,13 +72,14 @@ private:
|
|||||||
std::shared_ptr<CLCaster> raycaster;
|
std::shared_ptr<CLCaster> raycaster;
|
||||||
std::shared_ptr<LightHandle> light_handle;
|
std::shared_ptr<LightHandle> light_handle;
|
||||||
std::shared_ptr<LightController> light_controller;
|
std::shared_ptr<LightController> light_controller;
|
||||||
|
GraphTimer fps;
|
||||||
Input input_handler;
|
Input input_handler;
|
||||||
std::shared_ptr<WindowHandler> window_handler;
|
std::shared_ptr<WindowHandler> window_handler;
|
||||||
|
|
||||||
// The sfml imgui wrapper I'm using requires Update be called with sf::Time
|
// The sfml imgui wrapper I'm using requires Update be called with sf::Time
|
||||||
// Might modify it to also accept seconds
|
// Might modify it to also accept seconds
|
||||||
sf::Clock sf_delta_clock;
|
sf::Clock sf_delta_clock;
|
||||||
GraphTimer fps;
|
|
||||||
|
|
||||||
// vars for us to use with ImGUI
|
// vars for us to use with ImGUI
|
||||||
float light_color[4] = { 0, 0, 0, 0 };
|
float light_color[4] = { 0, 0, 0, 0 };
|
||||||
|
|||||||
@@ -11,12 +11,15 @@ public:
|
|||||||
|
|
||||||
~GraphTimer();
|
~GraphTimer();
|
||||||
|
|
||||||
|
static GraphTimer* get_instance();
|
||||||
|
|
||||||
unsigned int create_line(std::string label);
|
unsigned int create_line(std::string label);
|
||||||
unsigned int delete_line(unsigned int idx);
|
unsigned int delete_line(unsigned int idx);
|
||||||
|
|
||||||
void start(unsigned int idx);
|
void start(unsigned int idx);
|
||||||
void stop(unsigned int idx);
|
void stop(unsigned int idx);
|
||||||
void frame(unsigned int idx, double delta_time);
|
void frame(unsigned int idx, double delta_time);
|
||||||
|
void count(unsigned int idx, int counter);
|
||||||
|
|
||||||
void draw();
|
void draw();
|
||||||
|
|
||||||
@@ -31,4 +34,7 @@ private:
|
|||||||
std::vector<int> counters;
|
std::vector<int> counters;
|
||||||
std::vector<std::string> labels;
|
std::vector<std::string> labels;
|
||||||
|
|
||||||
|
|
||||||
|
// I actually think I might make this a singleton, along
|
||||||
|
static GraphTimer* instance;
|
||||||
};
|
};
|
||||||
@@ -52,6 +52,9 @@ private:
|
|||||||
std::vector<sf::Mouse::Button> held_mouse_buttons;
|
std::vector<sf::Mouse::Button> held_mouse_buttons;
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Debug, remove this when finished
|
||||||
|
int graph_index = 0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static const std::vector<std::string> key_strings;
|
static const std::vector<std::string> key_strings;
|
||||||
|
|||||||
@@ -13,9 +13,6 @@ Application::Application() {
|
|||||||
|
|
||||||
ImGui::SFML::Init(*window);
|
ImGui::SFML::Init(*window);
|
||||||
window->resetGLStates();
|
window->resetGLStates();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Application::~Application() {
|
Application::~Application() {
|
||||||
@@ -112,7 +109,7 @@ bool Application::game_loop() {
|
|||||||
|
|
||||||
int fps_idx = fps.create_line("FPS");
|
int fps_idx = fps.create_line("FPS");
|
||||||
int compute_fps_idx = fps.create_line("Compute");
|
int compute_fps_idx = fps.create_line("Compute");
|
||||||
int event_fps_idx = fps.create_line("Event");
|
int event_fps_idx = fps.create_line("Event Time");
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ GraphTimer::GraphTimer() {
|
|||||||
start_time = std::chrono::system_clock::now();
|
start_time = std::chrono::system_clock::now();
|
||||||
started = true;
|
started = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: This is a cardinal sin
|
||||||
|
if (instance == nullptr){
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphTimer::~GraphTimer() {
|
GraphTimer::~GraphTimer() {
|
||||||
@@ -36,35 +41,37 @@ void GraphTimer::stop(unsigned int idx){
|
|||||||
std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
|
std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> elapsed_time = now - start_time;
|
std::chrono::duration<double> elapsed_time = now - start_time;
|
||||||
|
|
||||||
|
if (++counters.at(idx) >= FPS_ARRAY_LENGTH)
|
||||||
|
counters.at(idx) = 0;
|
||||||
|
|
||||||
fps_vectors.at(idx).at(counters.at(idx)) = elapsed_time.count() - checkpoints.at(idx);
|
fps_vectors.at(idx).at(counters.at(idx)) = elapsed_time.count() - checkpoints.at(idx);
|
||||||
fps_vectors.at(idx).at(counters.at(idx)) = 1.0f / fps_vectors.at(idx).at(counters.at(idx));
|
fps_vectors.at(idx).at(counters.at(idx)) = 1.0f / fps_vectors.at(idx).at(counters.at(idx));
|
||||||
if (++counters.at(idx) >= FPS_ARRAY_LENGTH - 1)
|
|
||||||
counters.at(idx) = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphTimer::frame(unsigned int idx, double delta_time) {
|
void GraphTimer::frame(unsigned int idx, double delta_time) {
|
||||||
fps_vectors.at(idx).at(counters.at(idx)) = 1.0 / delta_time;
|
|
||||||
if (++counters.at(idx) >= FPS_ARRAY_LENGTH - 1)
|
// Do this before we access to make the title generation in draw a bit easier
|
||||||
|
if (++counters.at(idx) >= FPS_ARRAY_LENGTH)
|
||||||
counters.at(idx) = 0;
|
counters.at(idx) = 0;
|
||||||
|
|
||||||
|
fps_vectors.at(idx).at(counters.at(idx)) = 1.0 / delta_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphTimer::draw() {
|
void GraphTimer::draw() {
|
||||||
|
|
||||||
ImGui::Begin("Performance");
|
ImGui::Begin("Performance");
|
||||||
|
|
||||||
std::vector<std::vector<int>> data = {
|
|
||||||
{1, 2, 3, 4},
|
|
||||||
{9, 3, 7, 1},
|
|
||||||
{8, 3, 6, 2}
|
|
||||||
};
|
|
||||||
|
|
||||||
std::string title = std::to_string(fps_vectors.at(0).at(counters.at(0)));
|
std::string title = std::to_string(fps_vectors.at(0).at(counters.at(0)));
|
||||||
|
|
||||||
|
|
||||||
std::vector<ImColor> colors = {
|
std::vector<ImColor> colors = {
|
||||||
ImColor(255, 255, 255),
|
ImColor(255, 255, 255),
|
||||||
ImColor(0, 255, 0),
|
ImColor(255, 255, 0),
|
||||||
|
ImColor( 0, 255, 255),
|
||||||
|
ImColor(255, 0, 255),
|
||||||
ImColor(255, 0, 0),
|
ImColor(255, 0, 0),
|
||||||
|
ImColor( 0, 255, 0),
|
||||||
|
ImColor( 0, 0, 255),
|
||||||
};
|
};
|
||||||
|
|
||||||
ImVec2 wh = ImGui::GetContentRegionAvail();
|
ImVec2 wh = ImGui::GetContentRegionAvail();
|
||||||
@@ -74,15 +81,21 @@ void GraphTimer::draw() {
|
|||||||
ImGui::PlotMultiLines(fps_vectors, title, labels, colors, 200, 0,
|
ImGui::PlotMultiLines(fps_vectors, title, labels, colors, 200, 0,
|
||||||
graph_size);
|
graph_size);
|
||||||
|
|
||||||
|
|
||||||
//ImVec2 wh(100, 200);
|
|
||||||
// ImGui::PlotLines("FPS", fps_array, 1000, 0,
|
|
||||||
// std::to_string(1.0 / fps_average).c_str(),
|
|
||||||
// 0.0f, 150.0f, wh);
|
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphTimer::count(unsigned int idx, int counter) {
|
||||||
|
if (++counters.at(idx) >= FPS_ARRAY_LENGTH)
|
||||||
|
counters.at(idx) = 0;
|
||||||
|
fps_vectors.at(idx).at(counters.at(idx)) = counter;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
GraphTimer *GraphTimer::get_instance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
std::chrono::time_point<std::chrono::system_clock> GraphTimer::start_time;
|
std::chrono::time_point<std::chrono::system_clock> GraphTimer::start_time;
|
||||||
bool GraphTimer::started;
|
bool GraphTimer::started;
|
||||||
|
GraphTimer* GraphTimer::instance = nullptr;
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
#include "Input.h"
|
#include <GraphTimer.h>
|
||||||
|
#include "Input.h"
|
||||||
|
|
||||||
|
|
||||||
Input::Input() {
|
Input::Input() {
|
||||||
|
GraphTimer *t = GraphTimer::get_instance();
|
||||||
|
graph_index = t->create_line("Event Counter");
|
||||||
}
|
}
|
||||||
|
|
||||||
Input::~Input() {
|
Input::~Input() {
|
||||||
@@ -21,6 +23,9 @@ void Input::consume_sf_events(sf::RenderWindow *window) {
|
|||||||
|
|
||||||
transpose_sf_events(sf_event_queue);
|
transpose_sf_events(sf_event_queue);
|
||||||
|
|
||||||
|
GraphTimer *t = GraphTimer::get_instance();
|
||||||
|
t->count(graph_index, sf_event_queue.size());
|
||||||
|
|
||||||
sf_event_queue.clear();
|
sf_event_queue.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user