DeerEngine/Deer/src/DeerCore/Universe/UniverseSerialization.cpp

35 lines
1.1 KiB
C++

#include "DeerCore/Universe.h"
#include "DeerCore/Serialization/World.h"
#include "cereal/archives/json.hpp"
#include <fstream>
namespace Deer {
void Universe::saveWorldInJson(World* world, WorldSerializationSettings& serializationSettings, const Path& path) {
std::ofstream file(path);
cereal::JSONOutputArchive archive(file);
WorldSerialization worldSerialization{
.settings = serializationSettings,
.world = world};
archive(cereal::make_nvp("SerializationSettings", serializationSettings));
archive(cereal::make_nvp("World", worldSerialization));
}
World* Universe::loadWorldFromJson(const WorldSettings& worldSettings, WorldSerializationSettings& serializationSettings, const Path& path) {
std::ifstream file(path);
cereal::JSONInputArchive archive(file);
World* world = Universe::createWorld(worldSettings);
WorldSerialization worldSerialization{
.settings = serializationSettings,
.world = world};
archive(cereal::make_nvp("SerializationSettings", serializationSettings));
archive(cereal::make_nvp("World", worldSerialization));
return world;
}
} // namespace Deer