From d1696eea12846a4d1bda09fa236093fabf0ae7ea Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 18 Jul 2024 10:22:45 +0300 Subject: [PATCH] feat: saving current camera --- src/objects/Player.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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) {