diff --git a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt
index 56d425655..ab7b12d51 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt
+++ b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt
@@ -22,6 +22,7 @@ SET(OBJECT_VIEWER_HDR main_window.h graphics_viewport.h animation_dialog.h
vegetable_dialog.h global_wind_dialog.h day_night_dialog.h sun_color_dialog.h
vegetable_noise_value_widget.h vegetable_density_page.h vegetable_landscape_page.h
vegetable_scale_page.h vegetable_appearance_page.h vegetable_rotate_page.h
+ tune_mrm_dialog.h
extension_system/iplugin_manager.h extension_system/plugin_manager.h)
SET(OBJECT_VIEWER_UIS animation_form.ui animation_set_form.ui settings_form.ui
@@ -35,7 +36,7 @@ SET(OBJECT_VIEWER_UIS animation_form.ui animation_set_form.ui settings_form.ui
particle_link_skeleton_form.ui water_pool_form.ui vegetable_dialog_form.ui
vegetable_noise_value_form.ui global_wind_form.ui sun_color_form.ui day_night_form.ui
vegetable_density_form.ui vegetable_apperance_form.ui vegetable_landscape_form.ui
- vegetable_rotate_form.ui vegetable_scale_form.ui)
+ vegetable_rotate_form.ui vegetable_scale_form.ui tune_mrm_form.ui)
SET(OBJECT_VIEWER_RCS object_viewer_qt.qrc)
diff --git a/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.cpp b/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.cpp
index fa018d914..b4902b2cb 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.cpp
+++ b/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.cpp
@@ -32,8 +32,9 @@ CGlobalWindDialog::CGlobalWindDialog(QWidget *parent)
{
_ui.setupUi(this);
+ _ui.horizontalSlider->setValue(int(Modules::objView().getScene()->getGlobalWindPower() * _ui.horizontalSlider->maximum()));
+
connect(_ui.horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(setWndPower(int)));
- connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWnd(bool)));
}
CGlobalWindDialog::~CGlobalWindDialog()
@@ -47,12 +48,4 @@ void CGlobalWindDialog::setWndPower(int value)
Modules::objView().getScene()->setGlobalWindPower(fValue);
}
-void CGlobalWindDialog::updateWnd(bool visible)
-{
- if (!visible || !Modules::objView().getScene())
- return;
-
- _ui.horizontalSlider->setValue(int(Modules::objView().getScene()->getGlobalWindPower() * _ui.horizontalSlider->maximum()));
-}
-
} /* namespace NLQT */
\ No newline at end of file
diff --git a/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.h b/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.h
index f69231cdb..dc2e68aaf 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.h
+++ b/code/nel/tools/3d/object_viewer_qt/src/global_wind_dialog.h
@@ -41,7 +41,6 @@ public:
private Q_SLOTS:
void setWndPower(int value);
- void updateWnd(bool visible);
private:
diff --git a/code/nel/tools/3d/object_viewer_qt/src/graphics_viewport.cpp b/code/nel/tools/3d/object_viewer_qt/src/graphics_viewport.cpp
index 2128cdbd1..04f956c11 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/graphics_viewport.cpp
+++ b/code/nel/tools/3d/object_viewer_qt/src/graphics_viewport.cpp
@@ -68,6 +68,7 @@ void CGraphicsViewport::init()
Modules::objView().init((nlWindow)winId(), width(), height());
Modules::psEdit().init();
+ Modules::veget().init();
setMouseTracking(true);
setFocusPolicy(Qt::StrongFocus);
@@ -77,7 +78,8 @@ void CGraphicsViewport::release()
{
//H_AUTO2
nldebug("CGraphicsViewport::release");
-
+
+ Modules::veget().release();
Modules::psEdit().release();
Modules::objView().release();
}
diff --git a/code/nel/tools/3d/object_viewer_qt/src/images/ico_skelscale.png b/code/nel/tools/3d/object_viewer_qt/src/images/ico_skelscale.png
index 9d6455da2..7154a8a05 100644
Binary files a/code/nel/tools/3d/object_viewer_qt/src/images/ico_skelscale.png and b/code/nel/tools/3d/object_viewer_qt/src/images/ico_skelscale.png differ
diff --git a/code/nel/tools/3d/object_viewer_qt/src/main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/main_window.cpp
index 674919afe..d2db507a3 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/main_window.cpp
+++ b/code/nel/tools/3d/object_viewer_qt/src/main_window.cpp
@@ -47,6 +47,7 @@
#include "global_wind_dialog.h"
#include "day_night_dialog.h"
#include "sun_color_dialog.h"
+#include "tune_mrm_dialog.h"
using namespace std;
using namespace NLMISC;
@@ -60,8 +61,6 @@ CMainWindow::CMainWindow(QWidget *parent)
_isGraphicsEnabled(false),
_isSoundInitialized(false),
_isSoundEnabled(false),
- _isLandscapeInitialized(false),
- _isLandscapeEnabled(false),
_GraphicsViewport(NULL),
_lastDir("."),
_mouseMode(NL3D::U3dMouseListener::edit3d)
@@ -79,6 +78,16 @@ CMainWindow::CMainWindow(QWidget *parent)
_originalPalette = QApplication::palette();
Modules::config().setAndCallback("QtStyle", CConfigCallback(this, &CMainWindow::cfcbQtStyle));
Modules::config().setAndCallback("QtPalette", CConfigCallback(this, &CMainWindow::cfcbQtPalette));
+ Modules::config().setAndCallback("SoundEnabled", CConfigCallback(this, &CMainWindow::cfcbSoundEnabled));
+
+ _GraphicsViewport->init();
+ _isGraphicsInitialized = true;
+
+ if (_isSoundEnabled)
+ {
+ Modules::sound().init();
+ _isSoundInitialized = true;
+ }
_SkeletonTreeModel = new CSkeletonTreeModel(this);
@@ -96,24 +105,16 @@ CMainWindow::CMainWindow(QWidget *parent)
restoreGeometry(settings.value("QtWindowGeometry").toByteArray());
settings.endGroup();
- _isGraphicsEnabled = true;
- _isLandscapeEnabled = true;
-
// As a special case, a QTimer with a timeout of 0 will time out as soon as all the events in the window system's event queue have been processed.
// This can be used to do heavy work while providing a snappy user interface.
_mainTimer = new QTimer(this);
connect(_mainTimer, SIGNAL(timeout()), this, SLOT(updateRender()));
- // timer->start(); // <- timeout 0
- // it's heavy on cpu, though, when no 3d driver initialized :)
- _mainTimer->start(23); // 25fps
_statusBarTimer = new QTimer(this);
connect(_statusBarTimer, SIGNAL(timeout()), this, SLOT(updateStatusBar()));
- _statusBarTimer->start(1000);
_statusInfo = new QLabel(this);
this->statusBar()->addPermanentWidget(_statusInfo);
- Modules::config().setAndCallback("SoundEnabled", CConfigCallback(this, &CMainWindow::cfcbSoundEnabled));
}
CMainWindow::~CMainWindow()
@@ -131,15 +132,18 @@ CMainWindow::~CMainWindow()
Modules::config().dropCallback("QtPalette");
Modules::config().dropCallback("QtStyle");
- _mainTimer->stop();
- _statusBarTimer->stop();
-
delete _AnimationDialog;
delete _AnimationSetDialog;
delete _SlotManagerDialog;
delete _SetupFog;
+ delete _TuneMRMDialog;
delete _ParticleControlDialog;
delete _ParticleWorkspaceDialog;
+
+ if (_isSoundInitialized)
+ Modules::sound().releaseGraphics();
+
+ _GraphicsViewport->release();
delete _GraphicsViewport;
}
@@ -152,11 +156,17 @@ void CMainWindow::setVisible(bool visible)
if (visible)
{
QMainWindow::setVisible(true);
- updateInitialization(true);
+ if (_isSoundInitialized)
+ Modules::sound().initGraphics();
+ _mainTimer->start(23);
+ _statusBarTimer->start(1000);
}
else
{
- updateInitialization(false);
+ _mainTimer->stop();
+ _statusBarTimer->stop();
+ if (_isSoundInitialized)
+ Modules::sound().releaseGraphics();
QMainWindow::setVisible(false);
}
}
@@ -273,95 +283,6 @@ void CMainWindow::updateStatusBar()
}
}
-void CMainWindow::updateInitialization(bool visible)
-{
- bool done;
- do
- {
- done = true; // set false whenever change
- bool wantSound = _isSoundEnabled && visible;
- bool wantGraphics = _isGraphicsEnabled && visible;
- // TODO WARNING: made Landscape stuff
- bool wantLandscape = wantGraphics && _isGraphicsInitialized && _isLandscapeEnabled;
-
- // .. stuff that depends on other stuff goes on top to prioritize deinitialization
-
- // Landscape
- if (_isLandscapeInitialized)
- {
- if (!wantLandscape)
- {
- _isLandscapeInitialized = false;
-// if (_isGraphicsInitialized)
-// Modules::veget().releaseGraphics();
- Modules::veget().release();
- done = false;
- }
- }
- else
- {
- if (wantLandscape)
- {
- Modules::veget().init();
-// if (_isGraphicsInitialized)
-// Modules::veget().initGraphics();
- _isLandscapeInitialized = true;
- done = false;
- }
- }
-
- // Graphics (Driver)
- if (_isGraphicsInitialized)
- {
- if (!wantGraphics)
- {
- _isGraphicsInitialized = false;
- if (_isSoundInitialized)
- Modules::sound().releaseGraphics();
- _GraphicsViewport->release();
- done = false;
- }
- }
- else
- {
- if (wantGraphics)
- {
- _GraphicsViewport->init();
- if (_isSoundInitialized)
- Modules::sound().initGraphics();
- _isGraphicsInitialized = true;
- done = false;
- }
- }
-
- // Sound (AudioMixer)
- if (_isSoundInitialized)
- {
- if (!wantSound)
- {
- _isSoundInitialized = false;
- if (_isGraphicsInitialized)
- Modules::sound().releaseGraphics();
- Modules::sound().release();
- done = false;
- }
- }
- else
- {
- if (wantSound)
- {
- Modules::sound().init();
- if (_isGraphicsInitialized)
- Modules::sound().initGraphics();
- _isSoundInitialized = true;
- done = false;
- }
- }
-
- }
- while (!done);
-}
-
void CMainWindow::createActions()
{
_openAction = new QAction(tr("&Open..."), this);
@@ -477,6 +398,9 @@ void CMainWindow::createMenus()
_toolsMenu->addAction(_SunColorDialog->toggleViewAction());
+ //_toolsMenu->addAction(_TuneMRMDialog->toggleViewAction());
+ _TuneMRMDialog->toggleViewAction()->setIcon(QIcon(":/images/ico_mrm_mesh.png"));
+
connect(_ParticleControlDialog->toggleViewAction(), SIGNAL(triggered(bool)),
_ParticleWorkspaceDialog, SLOT(setVisible(bool)));
@@ -518,6 +442,7 @@ void CMainWindow::createToolBars()
_toolsBar->addAction(_VegetableDialog->toggleViewAction());
_toolsBar->addAction(_GlobalWindDialog->toggleViewAction());
_toolsBar->addAction(_SkeletonScaleDialog->toggleViewAction());
+// _toolsBar->addAction(_TuneMRMDialog->toggleViewAction());
}
void CMainWindow::createStatusBar()
@@ -591,6 +516,11 @@ void CMainWindow::createDialogs()
addDockWidget(Qt::RightDockWidgetArea, _SetupFog);
_SetupFog->setVisible(false);
+ // create tune mrm dialog
+ _TuneMRMDialog = new CTuneMRMDialog(this);
+ addDockWidget(Qt::BottomDockWidgetArea, _TuneMRMDialog);
+ _TuneMRMDialog->setVisible(false);
+
connect(_ParticleControlDialog, SIGNAL(changeState()), _ParticleWorkspaceDialog, SLOT(setNewState()));
connect(_ParticleWorkspaceDialog, SIGNAL(changeActiveNode()), _ParticleControlDialog, SLOT(updateActiveNode()));
connect(_AnimationSetDialog->ui.setLengthPushButton, SIGNAL(clicked()), _AnimationDialog, SLOT(changeAnimLength()));
@@ -637,8 +567,6 @@ void CMainWindow::cfcbSoundEnabled(NLMISC::CConfigFile::CVar &var)
void CMainWindow::updateRender()
{
- updateInitialization(isVisible());
-
if (isVisible())
{
diff --git a/code/nel/tools/3d/object_viewer_qt/src/main_window.h b/code/nel/tools/3d/object_viewer_qt/src/main_window.h
index ee00a84fe..94b8b74cc 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/main_window.h
+++ b/code/nel/tools/3d/object_viewer_qt/src/main_window.h
@@ -53,6 +53,7 @@ class CVegetableDialog;
class CGlobalWindDialog;
class CDayNightDialog;
class CSunColorDialog;
+class CTuneMRMDialog;
class CMainWindow : public QMainWindow
{
@@ -93,7 +94,6 @@ private:
void createStatusBar();
void createDialogs();
- void updateInitialization(bool visible);
bool loadFile(const QString &fileName, const QString &skelName);
void cfcbQtStyle(NLMISC::CConfigFile::CVar &var);
@@ -102,7 +102,6 @@ private:
bool _isGraphicsInitialized, _isGraphicsEnabled;
bool _isSoundInitialized, _isSoundEnabled;
- bool _isLandscapeInitialized, _isLandscapeEnabled;
CGraphicsViewport *_GraphicsViewport;
CAnimationDialog *_AnimationDialog;
@@ -117,7 +116,7 @@ private:
CSkeletonScaleDialog *_SkeletonScaleDialog;
CDayNightDialog *_DayNightDialog;
CSunColorDialog *_SunColorDialog;
-
+ CTuneMRMDialog *_TuneMRMDialog;
CSkeletonTreeModel *_SkeletonTreeModel;
QPalette _originalPalette;
@@ -140,7 +139,6 @@ private:
QAction *_renderModeAction;
QAction *_frameDelayAction;
QAction *_lightGroupAction;
- QAction *_tuneMRMAction;
QAction *_reloadTexturesAction;
QAction *_cameraModeAction;
QAction *_resetCameraAction;
diff --git a/code/nel/tools/3d/object_viewer_qt/src/object_viewer_qt.qrc b/code/nel/tools/3d/object_viewer_qt/src/object_viewer_qt.qrc
index 1e63d3f0a..5b14b74f6 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/object_viewer_qt.qrc
+++ b/code/nel/tools/3d/object_viewer_qt/src/object_viewer_qt.qrc
@@ -27,6 +27,8 @@
images/ico_bgcolor.png
images/ico_framedelay.png
images/ico_skelscale.png
+ images/ico_mrm_mesh.png
+ images/ico_light_group.png
images/clear.png
images/insert.png
images/new.png
diff --git a/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.cpp b/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.cpp
index 0a17325ad..9a76b9db1 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.cpp
+++ b/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.cpp
@@ -34,7 +34,11 @@ CSunColorDialog::CSunColorDialog(QWidget *parent)
{
_ui.setupUi(this);
- connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(updateSunColor(bool)));
+ _ui.ambientWidget->setColor(Modules::objView().getScene()->getSunAmbient());
+ _ui.diffuseWidget->setColor(Modules::objView().getScene()->getSunDiffuse());
+ _ui.specularWidget->setColor(Modules::objView().getScene()->getSunSpecular());
+
+ //connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(updateSunColor(bool)));
connect(_ui.ambientWidget, SIGNAL(colorChanged(NLMISC::CRGBA)), this, SLOT(setAmbientSunColor(NLMISC::CRGBA)));
connect(_ui.diffuseWidget, SIGNAL(colorChanged(NLMISC::CRGBA)), this, SLOT(setDiffuseSunColor(NLMISC::CRGBA)));
connect(_ui.specularWidget, SIGNAL(colorChanged(NLMISC::CRGBA)), this, SLOT(setSpecularSunColor(NLMISC::CRGBA)));
@@ -44,16 +48,6 @@ CSunColorDialog::~CSunColorDialog()
{
}
-void CSunColorDialog::updateSunColor(bool visible)
-{
- if (!visible || !Modules::objView().getScene())
- return;
-
- _ui.ambientWidget->setColor(Modules::objView().getScene()->getSunAmbient());
- _ui.diffuseWidget->setColor(Modules::objView().getScene()->getSunDiffuse());
- _ui.specularWidget->setColor(Modules::objView().getScene()->getSunSpecular());
-}
-
void CSunColorDialog::setAmbientSunColor(NLMISC::CRGBA color)
{
Modules::objView().getScene()->setSunAmbient(color);
diff --git a/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.h b/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.h
index 1a4592caf..587ab5b1b 100644
--- a/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.h
+++ b/code/nel/tools/3d/object_viewer_qt/src/sun_color_dialog.h
@@ -44,7 +44,6 @@ public:
~CSunColorDialog();
private Q_SLOTS:
- void updateSunColor(bool visible);
void setAmbientSunColor(NLMISC::CRGBA color);
void setDiffuseSunColor(NLMISC::CRGBA color);
void setSpecularSunColor(NLMISC::CRGBA color);