#pragma once #include #include #include #include "SharedTypes.hpp" #include "CoordSpaceHelper.hpp" struct Bookmark { std::string name; CoordSpaceHelper coords; Vector windowSize; template void serialize(Archive& a) { a(name, coords, windowSize); } void scale_up(const WorldScalar& scaleUpAmount); }; class World; class BookmarkManager { public: BookmarkManager(World& w); void init(); void add_bookmark(const std::string& name); void remove_bookmark(uint32_t bookmarkIndex); void jump_to_bookmark(uint32_t bookmarkIndex); void scale_up(const WorldScalar& scaleUpAmount); template void save(Archive& a) const { a(bookmarks->size()); for(uint32_t i = 0; i < bookmarks->size(); i++) a(*bookmarks->at(i)); } template void load(Archive& a) { uint32_t newSize = bookmarks->size(); for(uint32_t i = 0; i < newSize; i++) { Bookmark b; a(b); bookmarks->emplace_back_direct(bookmarks, b); } } NetworkingObjects::NetObjOwnerPtr> bookmarks; private: World& world; };