OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
sky.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Matrix4x4>
4#include <Tempest/Texture2d>
5
8#include "resources.h"
9
10class World;
11
12class Sky final {
13 public:
14 struct State final {
15 const Tempest::Texture2d* lay[2] = {};
16 };
17
18 Sky(const SceneGlobals& scene, const World& world);
19 ~Sky();
20
21 void updateLight(const int64_t now);
22
23 const LightSource& sunLight() const { return sun; }
24 const Tempest::Vec3& ambientLight() const { return ambient; }
25 float sunIntensity() const { return GSunIntensity; }
26 float moonIntensity() const { return GMoonIntensity; }
27
28 const Tempest::Texture2d& sunImage() const { return *sunImg; }
29 const Tempest::Texture2d& moonImage() const { return *moonImg; }
30
31 const State& cloudsDay() const { return clouds[0]; }
32 const State& cloudsNight() const { return clouds[1]; }
33 Tempest::Vec2 cloudsOffset(int layer) const;
34 float isNight() const;
35
36 private:
37 const Tempest::Texture2d* skyTexture(std::string_view name, bool day, size_t id);
38 const Tempest::Texture2d* implSkyTexture(std::string_view name, bool day, size_t id);
39
40 LightSource sun;
41 Tempest::Vec3 ambient;
42
43 const SceneGlobals& scene;
44 State clouds[2]; //day, night;
45
46 const Tempest::Texture2d* sunImg = &Resources::fallbackBlack();
47 const Tempest::Texture2d* moonImg = &Resources::fallbackBlack();
48
49 float GSunIntensity = 0;
50 float GMoonIntensity = 0;
51 };
static const Tempest::Texture2d & fallbackBlack()
Definition sky.h:12
const State & cloudsNight() const
Definition sky.h:32
Tempest::Vec2 cloudsOffset(int layer) const
Definition sky.cpp:153
const Tempest::Vec3 & ambientLight() const
Definition sky.h:24
const State & cloudsDay() const
Definition sky.h:31
const Tempest::Texture2d & sunImage() const
Definition sky.h:28
float sunIntensity() const
Definition sky.h:25
const Tempest::Texture2d & moonImage() const
Definition sky.h:29
~Sky()
Definition sky.cpp:77
void updateLight(const int64_t now)
Definition sky.cpp:84
float moonIntensity() const
Definition sky.h:26
float isNight() const
Definition sky.cpp:80
const LightSource & sunLight() const
Definition sky.h:23
Definition world.h:31
const Tempest::Texture2d * lay[2]
Definition sky.h:15