|
|
|
|
@@ -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();
|
|
|
|
|
}
|
|
|
|
|
|