A little toolkit for single-quad fragment shader demos
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
839 B

#pragma once
#include <string>
#include <vector>
#include <memory>
#include <experimental/filesystem>
#include <cpptoml.h>
#include "shaders.h"
namespace fs = std::experimental::filesystem;
class Scene {
public:
std::string name;
ShaderBundle::ProgramHandle* shader_p;
};
class NullScene : public Scene {
};
class Project {
public:
Project() = default;
static Project fromFile(std::string path);
static Project fromFile(fs::path path);
static Project fromToml(std::shared_ptr<cpptoml::table> manifest, fs::path basepath);
void load_scene(std::shared_ptr<Scene> scene);
void reload_shaders();
void unload_project();
std::vector<std::shared_ptr<Scene>> scenes;
std::shared_ptr<Scene> current_scene;
bool scene_loaded = false;
std::string name;
fs::path basepath;
std::shared_ptr<ShaderBundle> shader_bundle;
};