Add grid option to display in front of canvas
This commit is contained in:
parent
4dc8f4f049
commit
6d70047762
5 changed files with 22 additions and 7 deletions
|
|
@ -35,6 +35,7 @@ void GridModifyTool::gui_toolbox() {
|
|||
WorldGrid& g = gridFoundIt->second;
|
||||
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);
|
||||
size_t typeSelected = static_cast<size_t>(g.gridType);
|
||||
std::vector<std::string> listOfGridTypes = {
|
||||
"Circle Points",
|
||||
|
|
|
|||
|
|
@ -75,10 +75,20 @@ ClientPortionID GridManager::get_max_id(ServerPortionID serverID) const {
|
|||
return maxClientID;
|
||||
}
|
||||
|
||||
void GridManager::draw(SkCanvas* canvas, const DrawData& drawData) {
|
||||
void GridManager::draw_back(SkCanvas* canvas, const DrawData& drawData) {
|
||||
auto& sortedGridIDS = sorted_grid_ids();
|
||||
for(ServerClientID id : sortedGridIDS)
|
||||
grids[id].draw(*this, canvas, drawData);
|
||||
for(ServerClientID id : sortedGridIDS) {
|
||||
if(!grids[id].displayInFront)
|
||||
grids[id].draw(*this, canvas, drawData);
|
||||
}
|
||||
}
|
||||
|
||||
void GridManager::draw_front(SkCanvas* canvas, const DrawData& drawData) {
|
||||
auto& sortedGridIDS = sorted_grid_ids();
|
||||
for(ServerClientID id : sortedGridIDS) {
|
||||
if(grids[id].displayInFront)
|
||||
grids[id].draw(*this, canvas, drawData);
|
||||
}
|
||||
}
|
||||
|
||||
void GridManager::draw_coordinates(SkCanvas* canvas, const DrawData& drawData) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ class GridManager {
|
|||
|
||||
void send_grid_info(ServerClientID gridID);
|
||||
void remove_grid(ServerClientID idToRemove);
|
||||
void draw(SkCanvas* canvas, const DrawData& drawData);
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -439,9 +439,11 @@ void World::scale_up(const WorldScalar& scaleUpAmount) {
|
|||
void World::draw(SkCanvas* canvas) {
|
||||
drawData.refresh_draw_optimizing_values();
|
||||
if(drawData.drawGrids)
|
||||
gridMan.draw(canvas, drawData);
|
||||
gridMan.draw_back(canvas, drawData);
|
||||
drawProg.draw(canvas, drawData);
|
||||
if(drawData.drawGrids)
|
||||
if(drawData.drawGrids) {
|
||||
gridMan.draw_front(canvas, drawData);
|
||||
gridMan.draw_coordinates(canvas, drawData);
|
||||
}
|
||||
draw_other_player_cursors(canvas, drawData);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class GridManager;
|
|||
class WorldGrid {
|
||||
public:
|
||||
template <class Archive> void serialize(Archive& a) {
|
||||
a(name, gridType, size, visible, offset, bounds, color, removeDivisionsOutwards, subdivisions, showCoordinates);
|
||||
a(name, gridType, size, visible, offset, bounds, color, removeDivisionsOutwards, subdivisions, showCoordinates, displayInFront);
|
||||
}
|
||||
|
||||
void draw(GridManager& gMan, SkCanvas* canvas, const DrawData& drawData);
|
||||
|
|
@ -43,6 +43,7 @@ class WorldGrid {
|
|||
WorldScalar coordinatesGridCoordDivSize;
|
||||
bool coordinatesWillBeDrawn = false;
|
||||
bool coordinatesAxisOnBounds = false;
|
||||
bool displayInFront = false;
|
||||
private:
|
||||
|
||||
struct ShaderData {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue