Started canvas component work, and moving to unique network pointers (build is broken)
This commit is contained in:
parent
d3d080620a
commit
5b5aef8369
33 changed files with 750 additions and 468 deletions
|
|
@ -283,7 +283,7 @@ void DrawingProgram::tool_options_gui() {
|
|||
}
|
||||
}
|
||||
|
||||
void DrawingProgram::modify_grid(const NetworkingObjects::NetObjPtr<WorldGrid>& gridToModify) {
|
||||
void DrawingProgram::modify_grid(const NetworkingObjects::NetObjWeakPtr<WorldGrid>& gridToModify) {
|
||||
std::unique_ptr<GridModifyTool> newTool(std::make_unique<GridModifyTool>(*this));
|
||||
newTool->set_grid(gridToModify);
|
||||
switch_to_tool_ptr(std::move(newTool));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "../DrawData.hpp"
|
||||
#include "DrawingProgramCache.hpp"
|
||||
#include "GridModifyTool.hpp"
|
||||
#include <Helpers/NetworkingObjects/NetObjPtr.hpp>
|
||||
#include <Helpers/NetworkingObjects/NetObjWeakPtr.hpp>
|
||||
#include "PanCanvasTool.hpp"
|
||||
#include "ZoomCanvasTool.hpp"
|
||||
#include "cereal/archives/portable_binary.hpp"
|
||||
|
|
@ -64,7 +64,7 @@ class DrawingProgram {
|
|||
|
||||
void clear_draw_cache();
|
||||
|
||||
void modify_grid(const NetworkingObjects::NetObjPtr<WorldGrid>& gridToModify);
|
||||
void modify_grid(const NetworkingObjects::NetObjWeakPtr<WorldGrid>& gridToModify);
|
||||
|
||||
private:
|
||||
std::optional<std::chrono::steady_clock::time_point> badFrametimeTimePoint;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "../MainProgram.hpp"
|
||||
#include "../DrawData.hpp"
|
||||
#include "Helpers/Networking/NetLibrary.hpp"
|
||||
#include "Helpers/NetworkingObjects/NetObjTemporaryPtr.decl.hpp"
|
||||
#include <Helpers/NetworkingObjects/NetObjWeakPtr.hpp>
|
||||
#include <Helpers/NetworkingObjects/NetObjGenericSerializedClass.hpp>
|
||||
#include <cstddef>
|
||||
|
|
@ -14,10 +15,11 @@ GridModifyTool::GridModifyTool(DrawingProgram& initDrawP):
|
|||
{
|
||||
}
|
||||
|
||||
void GridModifyTool::set_grid(const NetObjPtr<WorldGrid>& newGrid) {
|
||||
void GridModifyTool::set_grid(const NetObjWeakPtr<WorldGrid>& newGrid) {
|
||||
grid = newGrid;
|
||||
if(drawP.world.gridMan.grids->contains(grid)) {
|
||||
WorldGrid& g = *grid;
|
||||
NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
|
||||
if(gLock) {
|
||||
WorldGrid& g = *gLock;
|
||||
oldGrid = g;
|
||||
CoordSpaceHelper newCam;
|
||||
newCam.inverseScale = g.size / WorldScalar(WorldGrid::GRID_UNIT_PIXEL_SIZE);
|
||||
|
|
@ -35,8 +37,9 @@ void GridModifyTool::gui_toolbox() {
|
|||
Toolbar& t = drawP.world.main.toolbar;
|
||||
t.gui.push_id("Grid modify tool");
|
||||
t.gui.text_label_centered("Edit Grid");
|
||||
if(drawP.world.gridMan.grids->contains(grid)) {
|
||||
WorldGrid& g = *grid;
|
||||
NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
|
||||
if(gLock) {
|
||||
WorldGrid& g = *gLock;
|
||||
t.gui.input_text_field("grid name", "Name", &g.name);
|
||||
t.gui.checkbox_field("Visible", "Visible", &g.visible);
|
||||
t.gui.checkbox_field("Display in Front", "Display in front of canvas", &g.displayInFront);
|
||||
|
|
@ -86,8 +89,9 @@ bool GridModifyTool::right_click_popup_gui(Vector2f popupPos) {
|
|||
}
|
||||
|
||||
void GridModifyTool::tool_update() {
|
||||
if(drawP.world.gridMan.grids->contains(grid)) {
|
||||
WorldGrid& g = *grid;
|
||||
NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
|
||||
if(gLock) {
|
||||
WorldGrid& g = *gLock;
|
||||
switch(selectionMode) {
|
||||
case 0:
|
||||
if(drawP.controls.leftClick) {
|
||||
|
|
@ -137,7 +141,7 @@ void GridModifyTool::tool_update() {
|
|||
selectionMode = 0;
|
||||
break;
|
||||
}
|
||||
drawP.world.delayedUpdateObjectManager.send_update_to_all<WorldGrid>(grid, false);
|
||||
drawP.world.delayedUpdateObjectManager.send_update_to_all<WorldGrid>(gLock, false);
|
||||
}
|
||||
else
|
||||
selectionMode = 0;
|
||||
|
|
@ -148,8 +152,9 @@ bool GridModifyTool::prevent_undo_or_redo() {
|
|||
}
|
||||
|
||||
void GridModifyTool::draw(SkCanvas* canvas, const DrawData& drawData) {
|
||||
if(drawP.world.gridMan.grids->contains(grid)) {
|
||||
WorldGrid& g = *grid;
|
||||
NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
|
||||
if(gLock) {
|
||||
WorldGrid& g = *gLock;
|
||||
if(g.bounds.has_value()) {
|
||||
const auto& b = g.bounds.value();
|
||||
Vector2f bMin = drawP.world.drawData.cam.c.to_space(b.min);
|
||||
|
|
@ -180,5 +185,7 @@ void GridModifyTool::draw(SkCanvas* canvas, const DrawData& drawData) {
|
|||
}
|
||||
|
||||
void GridModifyTool::switch_tool(DrawingProgramToolType newTool) {
|
||||
drawP.world.delayedUpdateObjectManager.send_update_to_all<WorldGrid>(grid, true);
|
||||
NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
|
||||
if(gLock)
|
||||
drawP.world.delayedUpdateObjectManager.send_update_to_all<WorldGrid>(gLock, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
#pragma once
|
||||
#include "DrawingProgramToolBase.hpp"
|
||||
#include "../WorldGrid.hpp"
|
||||
#include "Helpers/NetworkingObjects/NetObjPtr.hpp"
|
||||
#include "Helpers/NetworkingObjects/NetObjWeakPtr.hpp"
|
||||
|
||||
class DrawingProgram;
|
||||
|
||||
class GridModifyTool : public DrawingProgramToolBase {
|
||||
public:
|
||||
GridModifyTool(DrawingProgram& initDrawP);
|
||||
void set_grid(const NetworkingObjects::NetObjPtr<WorldGrid>& newGrid);
|
||||
void set_grid(const NetworkingObjects::NetObjWeakPtr<WorldGrid>& newGrid);
|
||||
virtual DrawingProgramToolType get_type() override;
|
||||
virtual void gui_toolbox() override;
|
||||
virtual bool right_click_popup_gui(Vector2f popupPos) override;
|
||||
|
|
@ -18,6 +18,6 @@ class GridModifyTool : public DrawingProgramToolBase {
|
|||
virtual void switch_tool(DrawingProgramToolType newTool) override;
|
||||
private:
|
||||
WorldGrid oldGrid;
|
||||
NetworkingObjects::NetObjPtr<WorldGrid> grid;
|
||||
NetworkingObjects::NetObjWeakPtr<WorldGrid> grid;
|
||||
unsigned selectionMode = 0;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue