Merge branch 'AreaTool_fix' into 'ground_effects_editor'

bugfix: You can now select areas using the AreaTool again (CTRL+Left Click)

See merge request T1ti/noggit-red!12
This commit is contained in:
T1ti
2025-01-04 12:15:44 +00:00
4 changed files with 41 additions and 30 deletions

View File

@@ -3972,7 +3972,11 @@ void MapView::mousePressEvent(QMouseEvent* event)
activeTool()->onMousePress({ activeTool()->onMousePress({
.button = event->button(), .button = event->button(),
.mouse_position = event->pos(), .mouse_position = event->pos(),
.mod_shift_down = _mod_shift_down,
.mod_ctrl_down = _mod_ctrl_down, .mod_ctrl_down = _mod_ctrl_down,
.mod_alt_down = _mod_alt_down,
.mod_num_down = _mod_num_down,
.mod_space_down = _mod_space_down,
}); });
switch (event->button()) switch (event->button())

View File

@@ -56,7 +56,11 @@ namespace Noggit
{ {
Qt::MouseButton button = Qt::MouseButton::NoButton; Qt::MouseButton button = Qt::MouseButton::NoButton;
QPoint mouse_position; QPoint mouse_position;
bool mod_shift_down = false;
bool mod_ctrl_down = false; bool mod_ctrl_down = false;
bool mod_alt_down = false;
bool mod_num_down = false;
bool mod_space_down = false;
}; };
struct MouseReleaseParameters struct MouseReleaseParameters

View File

@@ -85,33 +85,6 @@ namespace Noggit
mapView()->getWorld()->renderer()->getTerrainParamsUniformBlock()->draw_areaid_overlay = false; mapView()->getWorld()->renderer()->getTerrainParamsUniformBlock()->draw_areaid_overlay = false;
} }
void AreaTool::onTick(float deltaTime, TickParameters const& params)
{
if (!mapView()->getWorld()->has_selection() || params.underMap || !params.left_mouse)
{
return;
}
if (params.mod_shift_down)
{
NOGGIT_ACTION_MGR->beginAction(mapView(), Noggit::ActionFlags::eCHUNKS_AREAID,
Noggit::ActionModalityControllers::eSHIFT
| Noggit::ActionModalityControllers::eLMB);
// draw the selected AreaId on current selected chunk
mapView()->getWorld()->setAreaID(mapView()->cursorPosition(), _selectedAreaId, false, _areaTool->brushRadius());
}
else if (params.mod_ctrl_down)
{
for (auto&& selection : mapView()->getWorld()->current_selection())
{
MapChunk* chnk(std::get<selected_chunk_type>(selection).chunk);
int newID = chnk->getAreaID();
_selectedAreaId = newID;
_areaTool->setZoneID(newID);
}
}
}
void AreaTool::onMouseMove(MouseMoveParameters const& params) void AreaTool::onMouseMove(MouseMoveParameters const& params)
{ {
if (params.left_mouse && params.mod_alt_down && !params.mod_shift_down && !params.mod_ctrl_down) if (params.left_mouse && params.mod_alt_down && !params.mod_shift_down && !params.mod_ctrl_down)
@@ -119,4 +92,34 @@ namespace Noggit
_areaTool->changeRadius(params.relative_movement.dx() / XSENS); _areaTool->changeRadius(params.relative_movement.dx() / XSENS);
} }
} }
void AreaTool::onMousePress(MousePressParameters const& params)
{
if (params.button != Qt::LeftButton)
{
return;
}
if (params.mod_shift_down)
{
NOGGIT_ACTION_MGR->beginAction(mapView(), Noggit::ActionFlags::eCHUNKS_AREAID,
Noggit::ActionModalityControllers::eSHIFT
| Noggit::ActionModalityControllers::eLMB);
// draw the selected AreaId on current selected chunk
mapView()->getWorld()->setAreaID(mapView()->cursorPosition(), _selectedAreaId, false, _areaTool->brushRadius());
}
else if(params.mod_ctrl_down)
{
mapView()->doSelection(true);
for (auto&& selection : mapView()->getWorld()->current_selection())
{
MapChunk* chnk(std::get<selected_chunk_type>(selection).chunk);
int newID = chnk->getAreaID();
_selectedAreaId = newID;
_areaTool->setZoneID(newID);
}
return;
}
}
} }

View File

@@ -37,12 +37,12 @@ namespace Noggit
virtual void onDeselected(); virtual void onDeselected();
void onTick(float deltaTime, TickParameters const& params) override;
void onMouseMove(MouseMoveParameters const& params) override; void onMouseMove(MouseMoveParameters const& params) override;
void onMousePress(MousePressParameters const& params) override;
private: private:
Ui::zone_id_browser* _areaTool = nullptr; Ui::zone_id_browser* _areaTool = nullptr;
int _selectedAreaId = -1; int _selectedAreaId = -1;
}; };
} }