From a9a2a4c8b5aad22d055c670c72eb41fc22b0d812 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 5 Oct 2024 12:17:55 +0100 Subject: Add LightDirection class --- gfx/lightDirection.cpp | 8 ++++++++ gfx/lightDirection.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 gfx/lightDirection.cpp create mode 100644 gfx/lightDirection.h (limited to 'gfx') diff --git a/gfx/lightDirection.cpp b/gfx/lightDirection.cpp new file mode 100644 index 0000000..6d7d1ea --- /dev/null +++ b/gfx/lightDirection.cpp @@ -0,0 +1,8 @@ +#include "lightDirection.h" +#include "maths.h" + +LightDirection::LightDirection(const Direction2D sunPos) : + pos {sunPos}, vec {glm::mat3 {rotate_yp(pi + sunPos.x, -sunPos.y)} * north}, + vert {-glm::clamp(-1.F, 0.F, vec.z - 0.1F)} +{ +} diff --git a/gfx/lightDirection.h b/gfx/lightDirection.h new file mode 100644 index 0000000..f1e1cc4 --- /dev/null +++ b/gfx/lightDirection.h @@ -0,0 +1,32 @@ +#pragma once + +#include "config/types.h" + +class LightDirection { +public: + // NOLINTNEXTLINE(hicpp-explicit-conversions) deliberately a helper + LightDirection(Direction2D sunPos); + + [[nodiscard]] Direction2D + position() const noexcept + { + return pos; + } + + [[nodiscard]] Direction3D + vector() const noexcept + { + return vec; + } + + [[nodiscard]] float + vertical() const noexcept + { + return vert; + } + +private: + Direction2D pos; + Direction3D vec; + float vert; +}; -- cgit v1.2.3