#pragma once
#include <memory>
#include <string>
#include "extern.h"
#include "spdlog/logger.h"

class renderer;
class render_target;
class texture;
class application;

extern application* g_application;

class CORE_API application {
public:
    application();
    virtual ~application() = default;

    application(const application&) = delete;

    application(application&&) = delete;

    virtual void init();

    virtual void shutdown();


    bool update_application();

    virtual void tick(float delta_time)
    {
    }

protected:
};