add missing files

This commit is contained in:
sshumakov3
2020-11-18 18:15:46 +03:00
parent 6ead62f0b2
commit 7e24b75144
6 changed files with 1270 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
#include "ModelView.hpp"
using namespace noggit::Red::PresetEditor;
ModelViewer::ModelViewer(QWidget *parent)
: AssetBrowser::ModelViewer(parent, noggit::NoggitRenderContext::PRESET_EDITOR)
, _world(std::make_unique<World> ("azeroth", 0, noggit::NoggitRenderContext::PRESET_EDITOR))
{
}
void ModelViewer::paintGL()
{
const qreal now(_startup_time.elapsed() / 1000.0);
opengl::context::scoped_setter const _ (::gl, context());
makeCurrent();
gl.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
tick(now - _last_update);
_last_update = now;
MinimapRenderSettings _settings_unused;
std::map<int, misc::random_color> area_id_colors;
_world->draw(model_view().transposed()
, projection().transposed()
, math::vector_3d(0.f, 0.f, 0.f)
, 0.f
, math::vector_4d(1.f, 1.f, 1.f, 1.f)
, CursorType::CIRCLE
, 0.f
, false
, false
, 0.f
, math::vector_3d(0.f, 0.f, 0.f)
, 0.f
, 0.f
, false
, false
, false
, false
, false
, editing_mode::ground
, math::vector_3d(0.f, 0.f, 0.f)
, true
, false
, false
, false
, true
, true
, true
, true
, true
, true
, false
, false
, false
, &_settings_unused
, area_id_colors
, false
, eTerrainType::eTerrainType_Flat
, 0
, display_mode::in_3D
);
// Sorting issues may naturally occur here due to draw order. But we can't avoid them if we want world as an underlay.
// It is just a preview after all.
draw();
}

View File

@@ -0,0 +1,29 @@
#ifndef NOGGIT_MODELVIEW_HPP
#define NOGGIT_MODELVIEW_HPP
#include <noggit/Red/AssetBrowser/ModelView.hpp>
#include <noggit/World.h>
namespace noggit
{
namespace Red::PresetEditor
{
class ModelViewer : public Red::AssetBrowser::ModelViewer
{
public:
explicit ModelViewer(QWidget* parent = nullptr);
private:
std::unique_ptr<World> _world;
void paintGL() override;
};
}
}
#endif //NOGGIT_MODELVIEW_HPP

View File

@@ -0,0 +1,185 @@
#include "PresetEditor.hpp"
#include <noggit/ui/FramelessWindow.hpp>
#include <noggit/ui/font_noggit.hpp>
using namespace noggit::Red::PresetEditor::Ui;
using namespace noggit::ui;
PresetEditorWidget::PresetEditorWidget(QWidget *parent)
: QMainWindow(parent, Qt::Window)
{
setWindowTitle("Preset Editor");
auto body = new QWidget(this);
ui = new ::Ui::PresetEditor;
ui->setupUi(body);
setCentralWidget(body);
auto titlebar = new QWidget(this);
ui::setupFramelessWindow(titlebar, this, minimumSize(), maximumSize(), true);
setMenuWidget(titlebar);
setWindowFlags(windowFlags() | Qt::Tool | Qt::WindowStaysOnTopHint);
_model = new QFileSystemModel(this);
_sort_model = new QSortFilterProxyModel(this);
_sort_model->setFilterCaseSensitivity(Qt::CaseInsensitive);
_sort_model->setFilterRole(Qt::UserRole);
_sort_model->setRecursiveFilteringEnabled(true);
auto overlay = new QWidget(ui->viewport);
viewport_overlay_ui = new ::Ui::PresetEditorOverlay();
viewport_overlay_ui->setupUi(overlay);
overlay->setAttribute(Qt::WA_TranslucentBackground);
overlay->setMouseTracking(true);
overlay->setGeometry(0,0,ui->viewport->width(),ui->viewport->height());
connect(ui->viewport, &ModelViewer::resized
,[this, overlay]()
{
overlay->setGeometry(0,0,ui->viewport->width(),ui->viewport->height());
}
);
viewport_overlay_ui->toggleAnimationButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_ANIMATION));
viewport_overlay_ui->toggleModelsButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_DOODADS));
viewport_overlay_ui->toggleParticlesButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_UNUSED));
viewport_overlay_ui->toggleBoundingBoxButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_WITH_BOX));
viewport_overlay_ui->toggleWMOButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_WMO));
viewport_overlay_ui->toggleGridButton->setIcon(font_noggit_icon(font_noggit::icons::VISIBILITY_LINES));
ui->viewport->installEventFilter(overlay);
overlay->show();
ui->viewport->setLightDirection(120.0f, 60.0f);
// drag'n'drop
ui->listfileTree->setDragEnabled(true);
ui->listfileTree->setDragDropMode(QAbstractItemView::DragOnly);
ui->listfileTree->setIconSize(QSize(90, 90));
_sort_model->setSourceModel(_model);
ui->listfileTree->setModel(_sort_model);
_preview_renderer = new PreviewRenderer(90, 90,
noggit::NoggitRenderContext::PRESET_EDITOR_PREVIEW, this);
_preview_renderer->setVisible(false);
// just to initialize context, ugly-ish
_preview_renderer->setModelOffscreen("world/wmo/azeroth/buildings/human_farm/farm.wmo");
_preview_renderer->renderToPixmap();
setupConnectsCommon();
}
void PresetEditorWidget::setupConnectsCommon()
{
connect(ui->searchButton, &QPushButton::clicked
,[this]()
{
_sort_model->setFilterFixedString(ui->searchField->text());
}
);
connect(viewport_overlay_ui->lightDirY, &QDial::valueChanged
,[this]()
{
ui->viewport->setLightDirection(viewport_overlay_ui->lightDirY->value(),
viewport_overlay_ui->lightDirZ->value());
}
);
connect(viewport_overlay_ui->lightDirZ, &QSlider::valueChanged
,[this]()
{
ui->viewport->setLightDirection(viewport_overlay_ui->lightDirY->value(),
viewport_overlay_ui->lightDirZ->value());
}
);
connect(viewport_overlay_ui->moveSensitivitySlider, &QSlider::valueChanged
,[this]()
{
ui->viewport->setMoveSensitivity(static_cast<float>(viewport_overlay_ui->moveSensitivitySlider->value()));
}
);
connect(ui->viewport, &ModelViewer::sensitivity_changed
,[this]()
{
viewport_overlay_ui->moveSensitivitySlider->setValue(ui->viewport->getMoveSensitivity() * 30.0f);
}
);
connect(viewport_overlay_ui->cameraXButton, &QPushButton::clicked
,[this]()
{
ui->viewport->resetCamera(0.f, 0.f, 0.f, 0.f, -90.f, 0.f);
}
);
connect(viewport_overlay_ui->cameraYButton, &QPushButton::clicked
,[this]()
{
ui->viewport->resetCamera(0.f, 0.f, 0.f, 0.f, 0, 90.f);
}
);
connect(viewport_overlay_ui->cameraZButton, &QPushButton::clicked
,[this]()
{
ui->viewport->resetCamera(0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
}
);
connect(viewport_overlay_ui->cameraResetButton, &QPushButton::clicked
,[this]()
{
ui->viewport->resetCamera();
}
);
connect(viewport_overlay_ui->doodadSetSelector, qOverload<int>(&QComboBox::currentIndexChanged)
,[this](int index)
{
ui->viewport->setActiveDoodadSet(ui->viewport->getLastSelectedModel(),
viewport_overlay_ui->doodadSetSelector->currentText().toStdString());
}
);
// Render toggles
connect(viewport_overlay_ui->toggleWMOButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_wmo.toggle();});
connect(viewport_overlay_ui->toggleBoundingBoxButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_boxes.toggle();});
connect(viewport_overlay_ui->toggleParticlesButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_particles.toggle();});
connect(viewport_overlay_ui->toggleModelsButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_models.toggle();});
connect(viewport_overlay_ui->toggleAnimationButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_animated.toggle();});
connect(viewport_overlay_ui->toggleGridButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_grid.toggle();});
connect(&ui->viewport->_draw_wmo, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_wmo.set(state);});
connect(&ui->viewport->_draw_boxes, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_boxes.set(state);});
connect(&ui->viewport->_draw_particles, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_particles.set(state);});
connect(&ui->viewport->_draw_models, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_models.set(state);});
connect(&ui->viewport->_draw_animated, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_animated.set(state);});
connect(&ui->viewport->_draw_grid, &bool_toggle_property::changed,
[this](bool state) {ui->viewport->_draw_grid.set(state);});
}
PresetEditorWidget::~PresetEditorWidget()
{
}

View File

@@ -0,0 +1,39 @@
#ifndef NOGGIT_PRESETEDITOR_HPP
#define NOGGIT_PRESETEDITOR_HPP
#include <ui_PresetEditor.h>
#include <ui_PresetEditorOverlay.h>
#include <noggit/Red/PreviewRenderer/PreviewRenderer.hpp>
#include <noggit/Red/PresetEditor/ModelView.hpp>
#include <QWidget>
#include <QMainWindow>
#include <QFileSystemModel>
#include <QSortFilterProxyModel>
namespace noggit
{
namespace Red::PresetEditor::Ui
{
class PresetEditorWidget : public QMainWindow
{
public:
PresetEditorWidget(QWidget* parent = nullptr);
~PresetEditorWidget();
private:
void setupConnectsCommon();
::Ui::PresetEditor* ui;
::Ui::PresetEditorOverlay* viewport_overlay_ui;
QFileSystemModel* _model;
QSortFilterProxyModel* _sort_model;
PreviewRenderer* _preview_renderer;
};
}
}
#endif //NOGGIT_PRESETEDITOR_HPP

View File

@@ -0,0 +1,359 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PresetEditor</class>
<widget class="QWidget" name="PresetEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1724</width>
<height>818</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>1280</width>
<height>720</height>
</size>
</property>
<property name="acceptDrops">
<bool>true</bool>
</property>
<property name="windowTitle">
<string>Preset Editor</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="body" native="true">
<property name="minimumSize">
<size>
<width>1280</width>
<height>720</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSplitter" name="splitter_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>720</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="searchField"/>
</item>
<item>
<widget class="QPushButton" name="searchButton">
<property name="text">
<string>Search</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTreeView" name="listfileTree">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>20</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>1</width>
<height>1</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="alternatingRowColors">
<bool>false</bool>
</property>
<property name="iconSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="uniformRowHeights">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="animated">
<bool>true</bool>
</property>
<property name="headerHidden">
<bool>true</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="widget_2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="noggit::Red::PresetEditor::ModelViewer" name="viewport">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>500</width>
<height>400</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QWidget" name="toolPanel" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QToolBox" name="toolBox">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="page">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>561</width>
<height>702</height>
</rect>
</property>
<attribute name="label">
<string>World navigation</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QWidget" name="widget_3" native="true">
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="mapSelector_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>-1</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Map:</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_3"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="noggit::ui::minimap_widget" name="minimapHolder_2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>561</width>
<height>702</height>
</rect>
</property>
<attribute name="label">
<string>Page 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>noggit::Red::PresetEditor::ModelViewer</class>
<extends>QOpenGLWidget</extends>
<header location="global">noggit/Red/PresetEditor/ModelView.hpp</header>
</customwidget>
<customwidget>
<class>noggit::ui::minimap_widget</class>
<extends>QWidget</extends>
<header location="global">noggit/ui/minimap_widget.hpp</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,585 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PresetEditorOverlay</class>
<widget class="QWidget" name="PresetEditorOverlay">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1007</width>
<height>667</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<property name="spacing">
<number>6</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QPushButton" name="toggleModelsButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw models</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="toggleWMOButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw WMOs</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="toggleParticlesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw particles</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="toggleAnimationButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw animation</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="toggleBoundingBoxButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw bounding boxes</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="toggleGridButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Draw grid</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>550</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="cameraXButton">
<property name="text">
<string>X</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cameraYButton">
<property name="text">
<string>Y</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cameraZButton">
<property name="text">
<string>Z</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cameraResetButton">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="accessibleName">
<string>overlay_label</string>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="text">
<string>Doodadset:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="doodadSetSelector"/>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="accessibleName">
<string>overlay_label</string>
</property>
<property name="text">
<string>Move sensitivity:</string>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="moveSensitivitySlider">
<property name="accessibleName">
<string>overlay_slider_horizontal</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>30</number>
</property>
<property name="value">
<number>15</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>500</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="accessibleName">
<string>overlay_label</string>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="text">
<string>Light direction:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QDial" name="lightDirZ">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="minimum">
<number>-180</number>
</property>
<property name="maximum">
<number>180</number>
</property>
<property name="pageStep">
<number>1</number>
</property>
<property name="value">
<number>60</number>
</property>
<property name="wrapping">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="lightDirY">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>100</height>
</size>
</property>
<property name="accessibleName">
<string>overlay_slider_vertical</string>
</property>
<property name="minimum">
<number>-180</number>
</property>
<property name="maximum">
<number>180</number>
</property>
<property name="value">
<number>120</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="invertedControls">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>