diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-05 12:17:55 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-05 12:17:55 +0100 |
commit | a9a2a4c8b5aad22d055c670c72eb41fc22b0d812 (patch) | |
tree | 560dff885db74ba91b319be785395b060777f884 /gfx | |
parent | Add rotate_yp taking two separate parameters (diff) | |
download | ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.tar.bz2 ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.tar.xz ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.zip |
Add LightDirection class
Diffstat (limited to 'gfx')
-rw-r--r-- | gfx/lightDirection.cpp | 8 | ||||
-rw-r--r-- | gfx/lightDirection.h | 32 |
2 files changed, 40 insertions, 0 deletions
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; +}; |