summaryrefslogtreecommitdiff
path: root/apps/opencs/view/render/commands.cpp
blob: 515948489eeba7ebe98c6b12e2b00041ad483ad8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "commands.hpp"

#include <components/debug/debuglog.hpp>

#include "terrainshapemode.hpp"
#include "worldspacewidget.hpp"

CSVRender::DrawTerrainSelectionCommand::DrawTerrainSelectionCommand(WorldspaceWidget* worldspaceWidget, QUndoCommand* parent)
    : mWorldspaceWidget(worldspaceWidget)
{ }

void CSVRender::DrawTerrainSelectionCommand::redo()
{
    tryUpdate();
}

void CSVRender::DrawTerrainSelectionCommand::undo()
{
    tryUpdate();
}

void CSVRender::DrawTerrainSelectionCommand::tryUpdate()
{
    if (!mWorldspaceWidget)
    {
        Log(Debug::Verbose) << "Can't update terrain selection, no WorldspaceWidget found!";
        return;
    }

    auto terrainMode = dynamic_cast<CSVRender::TerrainShapeMode*>(mWorldspaceWidget->getEditMode());
    if (!terrainMode)
    {
        Log(Debug::Verbose) << "Can't update terrain selection in current EditMode";
        return;
    }

    terrainMode->getTerrainSelection()->update();
}