summaryrefslogtreecommitdiff
path: root/game/environment.h
blob: 94211bcd9efb0160704ef6d7f9243906e2f18e09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include "config/types.h"
#include "worldobject.h"
#include <chrono>

class SceneRenderer;
class SceneProvider;

class Environment : public WorldObject {
public:
	using WorldTime = std::chrono::utc_time<std::chrono::seconds>;

	Environment();
	void tick(TickDuration elapsed) override;
	void render(const SceneRenderer &, const SceneProvider &) const;
	[[nodiscard]] Direction2D getSunPos() const;
	[[nodiscard]] WorldTime getWorldTime() const;
	[[nodiscard]] static Direction2D getSunPos(Direction2D position, time_t time);

private:
	WorldTime worldTime;
	uint16_t gameTimeScaleFactor;
	glm::vec<2, Angle> earthPos;
};