35 lines
1.1 KiB
C++
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
|