#pragma once

#include <vector>
#include "basic.h"
#include <glad/glad.h>
#include <GLFW/glfw3.h>

struct Vertex {
  Vector3 position;
  Vector3 color;
  Vector2 uv;
};

struct Mesh {
  std::vector<Vertex> vertices;
};

struct Render_Data {
  GLFWwindow *glfw_window = nullptr;
  s32 width = 0;
  s32 height = 0;
  s32 triangle_count = 0;
  f32 frame_time = 0.0f;
  f32 user_interface_generate_time = 0.0f;
  bool use_alt_shader = false;
  s32 field_of_view = 90;

  f32 view_azimuth = 320.0f;
  f32 view_elevation = -15.0f;

  s32 move_forward = 0;
  s32 move_right = 0;
  s32 move_up = 0;
  f32 tick_diff = 0.0f;

  Vector3 camera_world_position = Vector3(0.5f, 0.25f, 1.0f);
};
