#pragma once
#include "Deer/Tools/Memory.h"

namespace Deer {
	class ImGuiLayer;
	namespace Core {
		extern int argc;
		extern char** argv;
	} // namespace Core

	class Timestep {
	  public:
		Timestep(float time = 0.0f) : m_time(time) {}

		float getSeconds() const { return m_time; }
		float getMilliseconds() const { return m_time * 1000; }

	  private:
		float m_time;
	};

	namespace Application {
		using Function = void (*)();

		extern bool running;

		void run();
		void setTickCallback(Function);

		void shutdown();
	} // namespace Application
} // namespace Deer
