diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-12-13 23:47:30 +0000 | 
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-12-13 23:47:30 +0000 | 
| commit | 1686a01b6ae7467e71eac247078248de4a3b3423 (patch) | |
| tree | 53716ce767b1b775dc06f658a41a647bddbbeac1 /gfx | |
| parent | Move TickDuration to its own files (diff) | |
| download | ilt-1686a01b6ae7467e71eac247078248de4a3b3423.tar.bz2 ilt-1686a01b6ae7467e71eac247078248de4a3b3423.tar.xz ilt-1686a01b6ae7467e71eac247078248de4a3b3423.zip | |
Refactor to start splitting out UI components
Diffstat (limited to 'gfx')
| -rw-r--r-- | gfx/camera_controller.h | 8 | ||||
| -rw-r--r-- | gfx/followCameraController.h | 3 | ||||
| -rw-r--r-- | gfx/gl/glSource.cpp | 2 | ||||
| -rw-r--r-- | gfx/gl/glSource.h | 1 | ||||
| -rw-r--r-- | gfx/gl/shader.cpp | 3 | ||||
| -rw-r--r-- | gfx/gl/shader.h | 2 | ||||
| -rw-r--r-- | gfx/gl/uiShader.cpp | 4 | ||||
| -rw-r--r-- | gfx/gl/uiShader.h | 3 | ||||
| -rw-r--r-- | gfx/inputHandler.h | 18 | ||||
| -rw-r--r-- | gfx/manualCameraController.cpp | 67 | ||||
| -rw-r--r-- | gfx/manualCameraController.h | 29 | ||||
| -rw-r--r-- | gfx/window.cpp | 32 | ||||
| -rw-r--r-- | gfx/window.h | 29 | 
13 files changed, 15 insertions, 186 deletions
| diff --git a/gfx/camera_controller.h b/gfx/camera_controller.h index 926c93b..e6fc16d 100644 --- a/gfx/camera_controller.h +++ b/gfx/camera_controller.h @@ -1,12 +1,16 @@  #ifndef CAMERA_CONTROLLER_H  #define CAMERA_CONTROLLER_H -#include <game/worldobject.h> +#include <special_members.hpp>  class Camera; -class CameraController : public WorldObject { +class CameraController {  public: +	CameraController() = default; +	virtual ~CameraController() = default; +	DEFAULT_MOVE_COPY(CameraController); +  	virtual void updateCamera(Camera *) const = 0;  }; diff --git a/gfx/followCameraController.h b/gfx/followCameraController.h index ef2000d..cfe70c2 100644 --- a/gfx/followCameraController.h +++ b/gfx/followCameraController.h @@ -1,7 +1,6 @@  #ifndef FOLLOW_CAMERA_CONTROLLER_H  #define FOLLOW_CAMERA_CONTROLLER_H -#include "game/worldobject.h"  #include <game/vehicles/vehicle.h>  #include <gfx/camera_controller.h> @@ -12,8 +11,6 @@ public:  	enum class Mode { Pan, Ride, ISO };  	explicit FollowCameraController(VehicleWPtr, Mode = Mode::Pan); -	void tick(TickDuration) override { } -  	void updateCamera(Camera * camera) const override;  private: diff --git a/gfx/gl/glSource.cpp b/gfx/gl/glSource.cpp index 13686ae..49773d0 100644 --- a/gfx/gl/glSource.cpp +++ b/gfx/gl/glSource.cpp @@ -1,5 +1,7 @@  #include "glSource.h"  #include <array> +#include <stdexcept> +#include <string>  GLsource::ShaderRef  GLsource::compile() const diff --git a/gfx/gl/glSource.h b/gfx/gl/glSource.h index 53c221b..e44c5a2 100644 --- a/gfx/gl/glSource.h +++ b/gfx/gl/glSource.h @@ -3,6 +3,7 @@  #include <GL/glew.h>  #include <glRef.hpp> +#include <string_view>  struct GLsource {  	using ShaderRef = glRef<GLuint, __glewCreateShader, __glewDeleteShader>; diff --git a/gfx/gl/shader.cpp b/gfx/gl/shader.cpp index 03e7899..a196e07 100644 --- a/gfx/gl/shader.cpp +++ b/gfx/gl/shader.cpp @@ -2,6 +2,7 @@  #include "gfx/gl/glSource.h"
  #include <array>
  #include <cstddef>
 +#include <gfx/gl/programHandle.h>
  #include <gfx/gl/shaders/fs-basicShader.h>
  #include <gfx/gl/shaders/fs-landmassShader.h>
  #include <gfx/gl/shaders/fs-waterShader.h>
 @@ -13,8 +14,6 @@  #include <glm/gtx/transform.hpp>
  #include <location.hpp>
  #include <maths.h>
 -#include <stdexcept>
 -#include <string>
  Shader::ProgramHandle::ProgramHandle(GLuint vs, GLuint fs) : ProgramHandleBase {vs, fs}
  {
 diff --git a/gfx/gl/shader.h b/gfx/gl/shader.h index 249b2f4..7df7a07 100644 --- a/gfx/gl/shader.h +++ b/gfx/gl/shader.h @@ -4,9 +4,7 @@  #include "programHandle.h"
  #include <GL/glew.h>
  #include <array>
 -#include <glRef.hpp>
  #include <glm/glm.hpp>
 -#include <string_view>
  class Location;
 diff --git a/gfx/gl/uiShader.cpp b/gfx/gl/uiShader.cpp index 2fbb0d4..b3fee14 100644 --- a/gfx/gl/uiShader.cpp +++ b/gfx/gl/uiShader.cpp @@ -1,8 +1,10 @@  #include "uiShader.h" +#include <gfx/gl/glSource.h> +#include <gfx/gl/programHandle.h>  #include <gfx/gl/shaders/fs-uiShader.h>  #include <gfx/gl/shaders/vs-uiShader.h> +#include <glm/glm.hpp>  #include <glm/gtc/type_ptr.hpp> -#include <glm/gtx/transform.hpp>  UIShader::UIShader(size_t width, size_t height) : program {uiShader_vs.compile(), uiShader_fs.compile()}  { diff --git a/gfx/gl/uiShader.h b/gfx/gl/uiShader.h index ff0e96d..b251136 100644 --- a/gfx/gl/uiShader.h +++ b/gfx/gl/uiShader.h @@ -2,7 +2,8 @@  #define UISHADER_H  #include "programHandle.h" -#include <cstdint> +#include <GL/glew.h> +#include <cstddef>  class UIShader {  public: diff --git a/gfx/inputHandler.h b/gfx/inputHandler.h deleted file mode 100644 index 5b426c7..0000000 --- a/gfx/inputHandler.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef INPUT_HANDLER_H -#define INPUT_HANDLER_H - -#include <special_members.hpp> - -union SDL_Event; - -class InputHandler { -public: -	InputHandler() = default; -	virtual ~InputHandler() = default; - -	DEFAULT_MOVE_COPY(InputHandler); - -	virtual bool handleInput(SDL_Event &) = 0; -}; - -#endif diff --git a/gfx/manualCameraController.cpp b/gfx/manualCameraController.cpp deleted file mode 100644 index cacf6ac..0000000 --- a/gfx/manualCameraController.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "manualCameraController.h" -#include <algorithm> -#include <cmath> -#include <gfx/gl/camera.h> -#include <maths.h> - -bool -ManualCameraController::handleInput(SDL_Event & e) -{ -	switch (e.type) { -		case SDL_KEYDOWN: -			switch (e.key.keysym.sym) { -				case SDLK_LCTRL: -				case SDLK_RCTRL: -					ctrl = true; -					return true; -			} -			break; -		case SDL_KEYUP: -			switch (e.key.keysym.sym) { -				case SDLK_LCTRL: -				case SDLK_RCTRL: -					ctrl = false; -					return true; -			} -			break; -		case SDL_MOUSEBUTTONDOWN: -			switch (e.button.button) { -				case SDL_BUTTON_RIGHT: -					SDL_SetRelativeMouseMode(SDL_TRUE); -					mrb = true; -					return true; -			} -			break; -		case SDL_MOUSEBUTTONUP: -			switch (e.button.button) { -				case SDL_BUTTON_RIGHT: -					SDL_SetRelativeMouseMode(SDL_FALSE); -					mrb = false; -					return true; -			} -			break; -		case SDL_MOUSEMOTION: -			if (mrb) { -				if (ctrl) { -					direction -= 0.01F * static_cast<float>(e.motion.xrel); -					pitch = std::clamp(pitch - 0.01F * static_cast<float>(e.motion.yrel), 0.1F, half_pi); -				} -				else { -					focus += rotate_flat(-direction) * glm::vec2 {-e.motion.xrel, e.motion.yrel}; -				} -			} -			return true; -		case SDL_MOUSEWHEEL: -			dist = std::clamp(dist - static_cast<float>(e.wheel.y) * 4.F, 5.F, 200.F); -			break; -	} -	return false; -} - -void -ManualCameraController::updateCamera(Camera * camera) const -{ -	camera->forward = glm::normalize(sincosf(direction) ^ -sin(pitch)); -	camera->pos = !focus + up * 3.F - (camera->forward * std::pow(dist, 1.3F)); -	camera->up = up; -} diff --git a/gfx/manualCameraController.h b/gfx/manualCameraController.h deleted file mode 100644 index f2141a4..0000000 --- a/gfx/manualCameraController.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef MANUAL_CAMERA_CONTROLLER_H -#define MANUAL_CAMERA_CONTROLLER_H - -#include "game/worldobject.h" -#include "inputHandler.h" -#include <SDL2/SDL.h> -#include <gfx/camera_controller.h> -#include <glm/glm.hpp> -#include <maths.h> - -class Camera; - -class ManualCameraController : public CameraController, public InputHandler { -public: -	explicit ManualCameraController(glm::vec2 f) : focus {f} { } - -	bool handleInput(SDL_Event & e) override; - -	void tick(TickDuration) override { } - -	void updateCamera(Camera * camera) const override; - -private: -	bool ctrl {false}, mrb {false}; -	glm::vec2 focus; -	float direction {quarter_pi}; -	float dist {40}, pitch {quarter_pi}; -}; -#endif diff --git a/gfx/window.cpp b/gfx/window.cpp deleted file mode 100644 index dd300a7..0000000 --- a/gfx/window.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "window.h"
 -#include <GL/glew.h>
 -#include <stdexcept>
 -
 -Window::Window(int width, int height, const std::string & title) :
 -	m_window {title.c_str(), static_cast<int>(SDL_WINDOWPOS_CENTERED), static_cast<int>(SDL_WINDOWPOS_CENTERED), width,
 -			height, static_cast<Uint32>(SDL_WINDOW_OPENGL)},
 -	m_glContext {m_window}
 -{
 -	if (glewInit() != GLEW_OK) {
 -		throw std::runtime_error {"Glew failed to initialize!"};
 -	}
 -
 -	glEnable(GL_DEPTH_TEST);
 -	glEnable(GL_CULL_FACE);
 -	glCullFace(GL_BACK);
 -	glEnable(GL_BLEND);
 -	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 -}
 -
 -void
 -Window::Clear(float r, float g, float b, float a) const
 -{
 -	glClearColor(r, g, b, a);
 -	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 -}
 -
 -void
 -Window::SwapBuffers() const
 -{
 -	SDL_GL_SwapWindow(m_window);
 -}
 diff --git a/gfx/window.h b/gfx/window.h deleted file mode 100644 index 252ccaa..0000000 --- a/gfx/window.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef DISPLAY_INCLUDED_H
 -#define DISPLAY_INCLUDED_H
 -
 -#include "ptr.hpp"
 -#include <SDL2/SDL.h>
 -#include <special_members.hpp>
 -#include <string>
 -#include <type_traits>
 -
 -class Window {
 -public:
 -	Window(int width, int height, const std::string & title);
 -	~Window() = default;
 -
 -	NO_COPY(Window);
 -	NO_MOVE(Window);
 -
 -	void Clear(float r, float g, float b, float a) const;
 -	void SwapBuffers() const;
 -
 -private:
 -	using GL_Context = std::remove_pointer_t<SDL_GLContext>;
 -	using SDL_WindowPtr = wrapped_ptrt<SDL_Window, SDL_CreateWindow, SDL_DestroyWindow>;
 -	using SDL_GLContextPtr = wrapped_ptrt<GL_Context, SDL_GL_CreateContext, SDL_GL_DeleteContext>;
 -	SDL_WindowPtr m_window;
 -	SDL_GLContextPtr m_glContext;
 -};
 -
 -#endif
 | 
