|
@@ -311,6 +311,7 @@ void MapController::commitObjectErase(int level)
|
|
{
|
|
{
|
|
//invalidate tiles under objects
|
|
//invalidate tiles under objects
|
|
_mapHandler->invalidate(_mapHandler->getTilesUnderObject(obj));
|
|
_mapHandler->invalidate(_mapHandler->getTilesUnderObject(obj));
|
|
|
|
+ _scenes[level]->objectsView.setDirty(obj);
|
|
}
|
|
}
|
|
|
|
|
|
_scenes[level]->selectionObjectsView.clear();
|
|
_scenes[level]->selectionObjectsView.clear();
|
|
@@ -371,7 +372,7 @@ void MapController::commitObstacleFill(int level)
|
|
|
|
|
|
_scenes[level]->selectionTerrainView.clear();
|
|
_scenes[level]->selectionTerrainView.clear();
|
|
_scenes[level]->selectionTerrainView.draw();
|
|
_scenes[level]->selectionTerrainView.draw();
|
|
- _scenes[level]->objectsView.draw();
|
|
|
|
|
|
+ _scenes[level]->objectsView.draw(false); //TODO: enable smart invalidation (setDirty)
|
|
_scenes[level]->passabilityView.update();
|
|
_scenes[level]->passabilityView.update();
|
|
|
|
|
|
_miniscenes[level]->updateViews();
|
|
_miniscenes[level]->updateViews();
|
|
@@ -380,8 +381,8 @@ void MapController::commitObstacleFill(int level)
|
|
|
|
|
|
void MapController::commitObjectChange(int level)
|
|
void MapController::commitObjectChange(int level)
|
|
{
|
|
{
|
|
- //for( auto * o : _scenes[level]->selectionObjectsView.getSelection())
|
|
|
|
- //_mapHandler->invalidate(o);
|
|
|
|
|
|
+ for( auto * o : _scenes[level]->selectionObjectsView.getSelection())
|
|
|
|
+ _scenes[level]->objectsView.setDirty(o);
|
|
|
|
|
|
_scenes[level]->objectsView.draw();
|
|
_scenes[level]->objectsView.draw();
|
|
_scenes[level]->selectionObjectsView.draw();
|
|
_scenes[level]->selectionObjectsView.draw();
|
|
@@ -411,6 +412,7 @@ void MapController::commitObjectShift(int level)
|
|
pos.x += shift.x(); pos.y += shift.y();
|
|
pos.x += shift.x(); pos.y += shift.y();
|
|
|
|
|
|
auto prevPositions = _mapHandler->getTilesUnderObject(obj);
|
|
auto prevPositions = _mapHandler->getTilesUnderObject(obj);
|
|
|
|
+ _scenes[level]->objectsView.setDirty(obj); //set dirty before movement
|
|
_map->getEditManager()->moveObject(obj, pos);
|
|
_map->getEditManager()->moveObject(obj, pos);
|
|
_mapHandler->invalidate(prevPositions);
|
|
_mapHandler->invalidate(prevPositions);
|
|
_mapHandler->invalidate(obj);
|
|
_mapHandler->invalidate(obj);
|
|
@@ -450,6 +452,7 @@ void MapController::commitObjectCreate(int level)
|
|
|
|
|
|
_map->getEditManager()->insertObject(newObj);
|
|
_map->getEditManager()->insertObject(newObj);
|
|
_mapHandler->invalidate(newObj);
|
|
_mapHandler->invalidate(newObj);
|
|
|
|
+ _scenes[level]->objectsView.setDirty(newObj);
|
|
|
|
|
|
_scenes[level]->selectionObjectsView.newObject = nullptr;
|
|
_scenes[level]->selectionObjectsView.newObject = nullptr;
|
|
_scenes[level]->selectionObjectsView.shift = QPoint(0, 0);
|
|
_scenes[level]->selectionObjectsView.shift = QPoint(0, 0);
|
|
@@ -495,7 +498,7 @@ void MapController::undo()
|
|
{
|
|
{
|
|
_map->getEditManager()->getUndoManager().undo();
|
|
_map->getEditManager()->getUndoManager().undo();
|
|
resetMapHandler();
|
|
resetMapHandler();
|
|
- sceneForceUpdate();
|
|
|
|
|
|
+ sceneForceUpdate(); //TODO: use smart invalidation (setDirty)
|
|
main->mapChanged();
|
|
main->mapChanged();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -503,6 +506,6 @@ void MapController::redo()
|
|
{
|
|
{
|
|
_map->getEditManager()->getUndoManager().redo();
|
|
_map->getEditManager()->getUndoManager().redo();
|
|
resetMapHandler();
|
|
resetMapHandler();
|
|
- sceneForceUpdate();
|
|
|
|
|
|
+ sceneForceUpdate(); //TODO: use smart invalidation (setDirty)
|
|
main->mapChanged();
|
|
main->mapChanged();
|
|
}
|
|
}
|