infinipaint/src/GridManager.hpp

39 lines
1.2 KiB
C++
Raw Normal View History

2025-07-06 20:43:53 +03:00
#pragma once
2025-12-10 13:06:45 +03:00
#include "Helpers/NetworkingObjects/NetObjPtr.decl.hpp"
2025-09-06 19:06:30 +03:00
#include "WorldGrid.hpp"
2025-12-10 13:06:45 +03:00
#include <Helpers/NetworkingObjects/NetObjOrderedList.hpp>
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
class World;
2025-07-06 20:43:53 +03:00
class GridManager {
public:
2025-09-06 19:06:30 +03:00
GridManager(World& w);
2025-12-10 17:23:05 +03:00
void init();
2025-12-10 13:06:45 +03:00
void add_default_grid(const std::string& newName);
template <typename Archive> void save(Archive& a) const {
2025-12-10 13:06:45 +03:00
a(grids->size());
for(uint32_t i = 0; i < grids->size(); i++)
a(*grids->at(i));
}
template <typename Archive> void load(Archive& a) {
2025-12-10 13:06:45 +03:00
uint32_t newSize = grids->size();
for(uint32_t i = 0; i < newSize; i++) {
WorldGrid b;
a(b);
grids->emplace_back_direct(grids, b);
}
}
2025-12-10 13:06:45 +03:00
void remove_grid(uint32_t indexToRemove);
void draw_back(SkCanvas* canvas, const DrawData& drawData);
void draw_front(SkCanvas* canvas, const DrawData& drawData);
void draw_coordinates(SkCanvas* canvas, const DrawData& drawData);
void scale_up(const WorldScalar& scaleUpAmount);
2025-12-10 13:06:45 +03:00
NetworkingObjects::NetObjPtr<NetworkingObjects::NetObjOrderedList<WorldGrid>> grids;
2025-09-06 19:06:30 +03:00
World& world;
2025-07-06 20:43:53 +03:00
};