X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FViewport.hpp;h=de62c4847c9cc67309030c6886ee66b394c19502;hb=d2f4c8720ae2326fac4203fa4984d835e875b355;hp=0bd6e89018d1ff6ed2d46b719a9131d086edda51;hpb=50f35affb16c78bd3d0b420f5ba37d74fcac391f;p=blank.git diff --git a/src/graphics/Viewport.hpp b/src/graphics/Viewport.hpp index 0bd6e89..de62c48 100644 --- a/src/graphics/Viewport.hpp +++ b/src/graphics/Viewport.hpp @@ -7,6 +7,8 @@ #include "Camera.hpp" #include "Canvas.hpp" #include "DirectionalLighting.hpp" +#include "PlainColor.hpp" +#include "SkyBoxShader.hpp" #include @@ -21,9 +23,10 @@ public: Viewport(const Viewport &) = delete; Viewport &operator =(const Viewport &) = delete; - void VSync(bool b) noexcept; + void VSync(bool b); void EnableDepthTest() noexcept; + void EqualDepthTest() noexcept; void DisableDepthTest() noexcept; void EnableBackfaceCulling() noexcept; @@ -41,14 +44,22 @@ public: void Clear() noexcept; void ClearDepth() noexcept; - void SetCursor(const glm::vec3 &); - void SetCursor(const glm::vec3 &, Gravity = Gravity::NORTH_WEST); - void MoveCursor(const glm::vec3 &); + glm::vec2 GetPosition(const glm::vec2 &off, Gravity grav) const noexcept; + + void SetCursor(const glm::vec3 &) noexcept; + void SetCursor(const glm::vec3 &, Gravity) noexcept; + void MoveCursor(const glm::vec3 &) noexcept; const glm::mat4 &Cursor() const noexcept { return cursor; } + void OffsetCamera(const glm::vec3 &o) noexcept { cam_offset = o; } + const glm::vec3 &CameraOffset() const noexcept { return cam_offset; } + BlockLighting &ChunkProgram() noexcept; DirectionalLighting &EntityProgram() noexcept; DirectionalLighting &HUDProgram() noexcept; + PlainColor &WorldColorProgram() noexcept; + PlainColor &HUDColorProgram() noexcept; + SkyBoxShader &SkyBoxProgram() noexcept; BlendedSprite &SpriteProgram() noexcept; void WorldPosition(const glm::mat4 &) noexcept; @@ -62,8 +73,12 @@ private: glm::mat4 cursor; + glm::vec3 cam_offset; + BlockLighting chunk_prog; DirectionalLighting entity_prog; + PlainColor color_prog; + SkyBoxShader sky_prog; BlendedSprite sprite_prog; enum { @@ -71,6 +86,9 @@ private: CHUNK, ENTITY, HUD, + COLOR_WORLD, + COLOR_HUD, + SKY_BOX, SPRITE, } active_prog;