diff --git a/src/objects/Player.cpp b/src/objects/Player.cpp index 7fc93d4c..6ffcd37c 100644 --- a/src/objects/Player.cpp +++ b/src/objects/Player.cpp @@ -11,6 +11,7 @@ #include "../objects/Entities.hpp" #include "../objects/rigging.hpp" +#include #include #include @@ -267,6 +268,11 @@ std::unique_ptr Player::serialize() const { root->put("chosen-slot", chosenSlot); root->put("entity", eid); root->put("inventory", inventory->serialize()); + auto found = std::find(level->cameras.begin(), level->cameras.end(), currentCamera); + if (found != level->cameras.end()) { + root->put("camera", level->content->getIndices( + ResourceType::CAMERA).getName(found - level->cameras.begin())); + } return root; } @@ -303,6 +309,14 @@ void Player::deserialize(dynamic::Map *src) { if (auto invmap = src->map("inventory")) { getInventory()->deserialize(invmap.get()); } + + if (src->has("camera")) { + std::string name; + src->str("camera", name); + if (auto camera = level->getCamera(name)) { + currentCamera = camera; + } + } } void Player::convert(dynamic::Map* data, const ContentLUT* lut) {