#pragma once

#include <functional> // IWYU pragma: keep
#include <memory> // IWYU pragma: keep
#include <string> // IWYU pragma: keep
#include <any> // IWYU pragma: keep
#include <map> // IWYU pragma: keep
#include <thread> // IWYU pragma: keep
#include <future> // IWYU pragma: keep
#include <fstream> // IWYU pragma: keep
#include <numeric> // IWYU pragma: keep
#include <filesystem> // IWYU pragma: keep
#include <any> // IWYU pragma: keep

/*
Если первым включен glad
то происходит ругание на то, что уже есть glad
и тут есть два пути исправления
первый 
#define GLFW_INCLUDE_NONE
#include "GLFW/glfw3.h"
#include "glad.h"
второй это поставить glad первым
*/

#include <glad.h> 
#include <GLFW/glfw3.h> 
#include <hack/logger/logger.hpp>
#include <hack/patterns/singleton.hpp> 
#include <imgui.h> 
#include <imgui_internal.h>
#include <imgui_impl_glfw.h> 
#include <imgui_impl_opengl3.h>
#include <misc/cpp/imgui_stdlib.h>
#include <hack/security/uuid.hpp>
#include <hack/exception/exception.hpp>
#include <hack/logger/logger.hpp>

// такой порядок  imgui.h
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif

#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
