day-night loop, dynamic skybox, clock on debug panel

This commit is contained in:
MihailRis
2023-11-28 11:01:22 +03:00
parent 4a9a4ddd14
commit c08c31b0ad
24 changed files with 599 additions and 48 deletions
+9 -2
View File
@@ -29,6 +29,11 @@ World::~World(){
delete wfile;
}
void World::updateTimers(float delta) {
daytime += delta * daytimeSpeed;
daytime = fmod(daytime, 1.0f);
}
void World::write(Level* level) {
const Content* content = level->content;
@@ -41,15 +46,17 @@ void World::write(Level* level) {
wfile->put(chunk.get());
}
wfile->write(WorldInfo {name, wfile->directory, seed}, content);
wfile->write(WorldInfo {name, wfile->directory, seed, daytime, daytimeSpeed}, content);
wfile->writePlayer(level->player);
}
Level* World::load(EngineSettings& settings, const Content* content) {
WorldInfo info {name, wfile->directory, seed};
WorldInfo info {name, wfile->directory, seed, daytime, daytimeSpeed};
wfile->readWorldInfo(info);
seed = info.seed;
name = info.name;
daytime = info.daytime;
daytimeSpeed = info.daytimeSpeed;
vec3 playerPosition = vec3(0, 100, 0);
Camera* camera = new Camera(playerPosition, glm::radians(90.0f));
+9
View File
@@ -5,6 +5,7 @@
#include <filesystem>
#include "../typedefs.h"
#include "../settings.h"
#include "../util/timeutil.h"
class Content;
class WorldFiles;
@@ -18,12 +19,20 @@ public:
WorldFiles* wfile;
uint64_t seed;
/* Day/night loop timer in range 0..1
0.0 - is midnight
0.5 - is noon
*/
float daytime = timeutil::time_value(10, 00, 00);
float daytimeSpeed = 1.0f/60.0f/24.0f;
World(std::string name,
std::filesystem::path directory,
uint64_t seed,
EngineSettings& settings);
~World();
void updateTimers(float delta);
void write(Level* level);
Level* load(EngineSettings& settings, const Content* content);
};