#pragma once #include #include #include #include #include #include #include #include #include "ResRes.h" class BSP; class OpenSource : public kapusha::IViewport { public: OpenSource( const char *path, const char *file, int depth = 32); virtual ~OpenSource(); void addMapRestriction(const std::string& name) { enabled_maps_.insert(name); } public: // IViewport virtual void init(kapusha::IViewportController *viewctrl); virtual void resize(kapusha::vec2i size); virtual void draw(int ms, float dt); virtual void close() {} virtual void inputPointer(const kapusha::PointerState& pointers); virtual void inputKey(const kapusha::KeyState& keys); private: kapusha::Render *render_; ResRes resources_; int depth_; kapusha::IViewportController *viewctrl_; std::map levels_; std::vector levelsv_; std::deque maps_to_load_; std::unordered_set enabled_maps_; kapusha::rect2f viewport_; kapusha::Camera camera_; float forward_speed_; float right_speed_; float pitch_speed_; float yaw_speed_; int selection_; bool show_selection_; bool mouselook_; };