Merge branch 'tools_rewrite' into 'ground_effects_editor'

Tools regression fixes

See merge request T1ti/noggit-red!9
This commit is contained in:
T1ti
2024-09-12 21:28:04 +00:00
6 changed files with 190 additions and 176 deletions

View File

@@ -47,6 +47,7 @@ namespace Noggit
void ImpassTool::onTick(float deltaTime, TickParameters const& params)
{
mapView()->doSelection(true);
if (!mapView()->getWorld()->has_selection() || params.underMap || !params.left_mouse)
{
return;

View File

@@ -477,9 +477,9 @@ namespace Noggit
void ObjectTool::onDeselected()
{
QSignalBlocker blocker{ _object_palette_dock };
_objectEditor->modelImport->hide();
_objectEditor->rotationEditor->hide();
_object_palette->hide();
_object_palette_dock->hide();
_moveObject = false;
}

View File

@@ -75,7 +75,7 @@ namespace Noggit
});
addHotkey("toggleTexturePalette"_hash, Hotkey{
.onPress = [=] { _show_texture_palette_small_window.toggle(); },
.onPress = [=] { _show_texture_palette_window.toggle(); },
.condition = [=] { return mapView->get_editing_mode() == editing_mode::paint && !NOGGIT_CUR_ACTION; },
});
@@ -83,15 +83,17 @@ namespace Noggit
, &MapView::selectionUpdated
, [=](std::vector<selection_type>& selection)
{
if (_texturePickerNeedUpdate)
if (mapView->isUiHidden() || _texturingTool->isHidden() || !_texturePickerNeedUpdate)
{
return;
}
_texturePickerDock->setVisible(true);
_texturePicker->setMainTexture(_texturingTool->_current_texture);
_texturePicker->getTextures(*selection.begin());
_texturePickerNeedUpdate = false;
}
}
);
}
@@ -122,7 +124,7 @@ namespace Noggit
{
auto mv = mapView();
/* Tool */
_texturingTool = new Ui::texturing_tool(&mv->getCamera()->position, mv, &_show_texture_palette_small_window, mv);
_texturingTool = new Ui::texturing_tool(&mv->getCamera()->position, mv, &_show_texture_palette_window, mv);
toolPanel->registerTool(this, _texturingTool);
// Connects
@@ -151,20 +153,23 @@ namespace Noggit
QObject::connect(_texturingTool->_current_texture, &Noggit::Ui::current_texture::clicked
, [=]
{
_textureBrowserDock->setVisible(!_textureBrowserDock->isVisible());
_show_texture_browser_window.set(!_show_texture_browser_window.get());
}
);
QObject::connect(_texturingTool, &Ui::texturing_tool::texturePaletteToggled,
[=]()
{
_show_texture_palette_small_window.set(!_show_texture_palette_small_window.get());
_show_texture_palette_window.set(!_show_texture_palette_window.get());
});
/* Additional tools */
/* Texture Browser */
setupTextureBrowser(mv);
setupTexturePalette(mv);
setupTexturePicker(mv);
}
void TexturingTool::setupTextureBrowser(MapView* mv)
{
// Dock
_textureBrowserDock = new QDockWidget("Texture Browser", mv);
_textureBrowserDock->setFeatures(QDockWidget::DockWidgetMovable
@@ -187,11 +192,11 @@ namespace Noggit
QObject::connect(mv, &QObject::destroyed, _textureBrowserDock, &QObject::deleteLater);
// End Dock
_texturePalette = new Noggit::Ui::tileset_chooser(mv);
_textureBrowserDock->setWidget(_texturePalette);
QObject::connect(mv, &QObject::destroyed, _texturePalette, &QObject::deleteLater);
_textureBrowser = new Noggit::Ui::tileset_chooser(mv);
_textureBrowserDock->setWidget(_textureBrowser);
QObject::connect(mv, &QObject::destroyed, _textureBrowser, &QObject::deleteLater);
QObject::connect(_texturePalette, &Noggit::Ui::tileset_chooser::selected
QObject::connect(_textureBrowser, &Noggit::Ui::tileset_chooser::selected
, [=](std::string const& filename)
{
mv->makeCurrent();
@@ -204,28 +209,26 @@ namespace Noggit
}
);
QObject::connect(_texturePalette, &Noggit::Ui::widget::visibilityChanged
, &_show_texture_palette_window, &Noggit::BoolToggleProperty::set
);
QObject::connect(&_show_texture_palette_window, &Noggit::BoolToggleProperty::changed
QObject::connect(&_show_texture_browser_window, &Noggit::BoolToggleProperty::changed
, [this, mv]
{
if ((mv->get_editing_mode() == editing_mode::paint || mv->get_editing_mode() == editing_mode::stamp)
&& !mv->isUiHidden())
if (!(mv->get_editing_mode() == editing_mode::paint || mv->get_editing_mode() == editing_mode::stamp)
|| mv->isUiHidden())
{
_textureBrowserDock->setVisible(_show_texture_palette_window.get());
}
else
{
QSignalBlocker const _(_show_texture_palette_window);
_show_texture_palette_window.set(false);
QSignalBlocker const _(_show_texture_browser_window);
_show_texture_browser_window.set(false);
return;
}
QSignalBlocker const _(_textureBrowser);
_textureBrowserDock->setVisible(_show_texture_browser_window.get());
}
);
}
/* Texture Palette Small */
_texturePaletteSmall = new Noggit::Ui::texture_palette_small(mv->project(), mv->getWorld()->getMapID(), mv);
void TexturingTool::setupTexturePalette(MapView* mv)
{
_texturePalette = new Noggit::Ui::texture_palette_small(mv->project(), mv->getWorld()->getMapID(), mv);
// Dock
_texturePaletteDock = new QDockWidget("Texture Palette", mv);
@@ -234,7 +237,7 @@ namespace Noggit
| QDockWidget::DockWidgetClosable
);
_texturePaletteDock->setWidget(_texturePaletteSmall);
_texturePaletteDock->setWidget(_texturePalette);
_texturePaletteDock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
_texturePaletteDock->hide();
@@ -253,7 +256,7 @@ namespace Noggit
mv->settings()->sync();
});
QObject::connect(_texturePaletteSmall, &Noggit::Ui::texture_palette_small::selected
QObject::connect(_texturePalette, &Noggit::Ui::texture_palette_small::selected
, [=](std::string const& filename)
{
mv->makeCurrent();
@@ -263,24 +266,21 @@ namespace Noggit
_texturingTool->_current_texture->set_texture(filename);
}
);
QObject::connect(mv, &QObject::destroyed, _texturePaletteSmall, &QObject::deleteLater);
QObject::connect(mv, &QObject::destroyed, _texturePalette, &QObject::deleteLater);
QObject::connect(&_show_texture_palette_small_window, &Noggit::BoolToggleProperty::changed
QObject::connect(&_show_texture_palette_window, &Noggit::BoolToggleProperty::changed
, _texturePaletteDock, [=]
{
QSignalBlocker const blocker(_show_texture_palette_small_window);
if (mv->get_editing_mode() == editing_mode::paint && !mv->isUiHidden())
if (mv->get_editing_mode() != editing_mode::paint || mv->isUiHidden())
{
_texturePaletteDock->setVisible(_show_texture_palette_small_window.get());
QSignalBlocker const _(_show_texture_palette_window);
_show_texture_palette_window.set(false);
return;
}
else
{
_show_texture_palette_small_window.set(false);
QSignalBlocker const _(_texturePalette);
_texturePaletteDock->setVisible(_show_texture_palette_window.get());
}
}
);
QObject::connect(_texturePaletteDock, &QDockWidget::visibilityChanged
, &_show_texture_palette_small_window, &Noggit::BoolToggleProperty::set
);
QObject::connect(_texturingTool->_current_texture, &Noggit::Ui::current_texture::texture_updated
@@ -290,9 +290,10 @@ namespace Noggit
_texturingTool->getGroundEffectsTool()->TextureChanged();
}
);
}
/* Texture Picker */
void TexturingTool::setupTexturePicker(MapView* mv)
{
// Dock
_texturePickerDock = new QDockWidget("Texture picker", mv);
_texturePickerDock->setFeatures(QDockWidget::DockWidgetMovable
@@ -339,8 +340,8 @@ namespace Noggit
void TexturingTool::registerMenuItems(QMenu* menu)
{
addMenuTitle(menu, "Texture Painter");
addMenuItem(menu, "Texture Browser", Qt::Key_X, _show_texture_palette_window);
addMenuItem(menu, "Texture palette", _show_texture_palette_small_window);
addMenuItem(menu, "Texture Browser", Qt::Key_X, _show_texture_browser_window);
addMenuItem(menu, "Texture palette", _show_texture_palette_window);
}
ToolDrawParameters TexturingTool::drawParameters() const
@@ -386,15 +387,23 @@ namespace Noggit
}
}
_textureBrowserDock->setVisible(!mv->isUiHidden() && mv->settings()->value("map_view/texture_browser", false).toBool());
_texturePaletteDock->setVisible(!mv->isUiHidden() && mv->settings()->value("map_view/texture_palette", false).toBool());
auto showTextureBrowser = _show_texture_browser_window.get() || mv->settings()->value("map_view/texture_browser", false).toBool();
auto showTexturePalette = _show_texture_palette_window.get() || mv->settings()->value("map_view/texture_palette", false).toBool();
_textureBrowserDock->setVisible(!mv->isUiHidden() && showTextureBrowser);
_texturePaletteDock->setVisible(!mv->isUiHidden() && showTexturePalette);
}
void TexturingTool::onDeselected()
{
_texturingTool->getGroundEffectsTool()->hide();
QSignalBlocker const blocker1(_show_texture_palette_window);
QSignalBlocker const blocker2(_show_texture_browser_window);
QSignalBlocker const blocker3(_textureBrowserDock);
_textureBrowserDock->setVisible(false);
_texturePaletteDock->setVisible(false);
_texturePickerDock->setVisible(false);
_texturePickerNeedUpdate = false;
}
void TexturingTool::onTick(float deltaTime, TickParameters const& params)
@@ -564,7 +573,7 @@ namespace Noggit
void TexturingTool::hidePopups()
{
_texturePaletteSmall->hide();
_texturePalette->hide();
_texturePickerDock->hide();
_textureBrowserDock->hide();
}

View File

@@ -56,15 +56,19 @@ namespace Noggit
private:
Ui::texturing_tool* _texturingTool = nullptr;
QDockWidget* _textureBrowserDock = nullptr;
Ui::tileset_chooser* _texturePalette = nullptr;
Ui::tileset_chooser* _textureBrowser = nullptr;
Ui::texture_picker* _texturePicker = nullptr;
Ui::texture_palette_small* _texturePaletteSmall = nullptr;
Ui::texture_palette_small* _texturePalette = nullptr;
QDockWidget* _texturePaletteDock = nullptr;
QDockWidget* _texturePickerDock = nullptr;
bool _texturePickerNeedUpdate = false;
Noggit::BoolToggleProperty _show_texture_browser_window = { false };
Noggit::BoolToggleProperty _show_texture_palette_window = { false };
Noggit::BoolToggleProperty _show_texture_palette_small_window = { false };
void randomizeTexturingRotation();
void setupTextureBrowser(MapView* mv);
void setupTexturePalette(MapView* mv);
void setupTexturePicker(MapView* mv);
};
}