#pragma once #include #include #include #include #include #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 manifest, fs::path basepath); void load_scene(std::shared_ptr scene); void reload_shaders(); void unload_project(); std::vector> scenes; std::shared_ptr current_scene; bool scene_loaded = false; std::string name; fs::path basepath; std::shared_ptr shader_bundle; };