diff --git a/TODO b/TODO
index bc79486..038debc 100644
--- a/TODO
+++ b/TODO
@@ -10,6 +10,7 @@ Technology Preview 2 :
=> Displacement on 3d explorer and previews.
=> Optimize ray marching (for tracing and shadows), using base terrain and displacement power.
- Fix rendering when inside a cloud layer, with other upper or lower layers.
+- Compress and ship bruneton cache data.
- Translations.
Technlogy Preview 3 :
diff --git a/data/i18n/paysages_fr.ts b/data/i18n/paysages_fr.ts
index a6a28c2..1209f0a 100644
--- a/data/i18n/paysages_fr.ts
+++ b/data/i18n/paysages_fr.ts
@@ -4,40 +4,98 @@
BaseForm
-
+
Niveaux :
-
+
Ajouter un niveau
-
+
Supprimer un niveau
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Appliquer
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Annuler les modifications
-
- Niveau %1
+ Niveau %1
+
+
+
+ BaseFormLayer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DialogColorGradation
-
+
-
+
Aperçu du rouge, cliquer pour éditer
-
+
Aperçu du vert, cliquer pour éditer
-
+
Aperçu du bleu, cliquez pour éditer
-
+
Aperçu du gradient final
-
+
Valider
-
+
Recommencer
-
+
Annuler
-
+
Paysages 3D - Editeur de gradients de couleur
@@ -93,7 +151,7 @@ Cliquez avec le bouton droit sur un point pour le supprimer.
DialogCurve
-
+
-
+
Valider
-
+
-
+
Annuler
-
+
@@ -124,12 +182,12 @@ Right click on a point to delete it.
DialogExplorer
-
+
Paysages 3D - Exploration
-
+
-
+
Revenir au point de vue initial
-
+
Choisir comme caméra de rendu
-
+
Fermer
- DialogMaterial
+ DialogLayers
-
-
- Valider
-
-
-
-
- Recommencer
-
-
-
+
Annuler
-
+
+
+ Recommencer
+
+
+
+
+ Valider
+
+
+
+
+
+
+
+
+ DialogMaterial
+
+
+
+ Valider
+
+
+
+ Recommencer
+
+
+
+
+ Annuler
+
+
+
+
+
+
+
+
@@ -187,62 +272,91 @@ Maintenir Ctrl : Plus lent
DialogNoise
-
+
Aperçu du composant
-
+
Aperçu du total
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Composants du bruit
-
+
Ajouter un composant
-
+
Supprimer un composant
-
+
Hauteur du composant
-
+
Echelle du composant
-
+
+
+
+
+
+
Valider
-
- Recommencer
+ Recommencer
-
+
Annuler
-
+
Paysages 3D - Editeur de bruit
-
+
Composant %1
@@ -250,16 +364,124 @@ Maintenir Ctrl : Plus lent
DialogRender
-
+
Paysages 3D - Rendu
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Paysages 3D - Choisissez un nom de fichier pour le rendu
+
+
+
+
+ Images (*.png *.jpg)
+
+
+
+
+ L'image %1 a été sauvegardée.
+
+
+
+
+
+
+
+
+
+ DialogTerrainPainting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DialogWanderer
@@ -314,44 +536,89 @@ Maintenir Ctrl : Plus rapide
FormAtmosphere
-
- Aperçu de la couleur
+ Aperçu de la couleur
-
- Distance de début
+ Distance de début
-
- Distance de fin
+ Distance de fin
-
- Opacité maximale
-
-
-
-
-
+ Opacité maximale
Verrouiller sur la couleur de la brume
-
- Couleur
+ Couleur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Aperçu de l'ouest
+
+
+
+
+ Aperçu de l'est
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Diamètre apparent du soleil
+
+
+
+
+
FormClouds
-
+
Couverture de la couche (sans éclairage)
@@ -372,7 +639,7 @@ Maintenir Ctrl : Plus rapide
Altitude de fin
-
+
@@ -389,7 +656,7 @@ Maintenir Ctrl : Plus rapide
Echelle
-
+
@@ -406,77 +673,81 @@ Maintenir Ctrl : Plus rapide
Concentration de la réflexion de lumière
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
Distance de transparence
-
+
Distance de traversée de la lumière
-
+
Eclairage minimal
@@ -511,22 +782,22 @@ Maintenir Ctrl : Plus rapide
FormMaterial
-
+
Couleur de base
-
+
-
+
-
+
@@ -534,64 +805,56 @@ Maintenir Ctrl : Plus rapide
FormRender
-
+
Aperçu plongeant
-
+
Caméra
-
+
Qualité de rendu
-
+
Largeur de l'image
-
+
Hauteur de l'image
-
+
-
+
Démarrer un rendu
-
+
Voir le dernier rendu
-
- Sauvegarder le dernier rendu
+ Sauvegarder le dernier rendu
-
- Paysages 3D - Choisissez un nom de fichier pour le rendu
+ Paysages 3D - Choisissez un nom de fichier pour le rendu
-
- Images (*.png *.jpg)
-
-
-
-
-
+ Images (*.png *.jpg)
@@ -602,147 +865,89 @@ Maintenir Ctrl : Plus rapide
Choisissez un nom de fichier pour le rendu
-
- L'image %1 a été sauvegardée.
+ L'image %1 a été sauvegardée.
FormSky
-
- Aperçu de l'ouest
+ Aperçu de l'ouest
-
- Aperçu de l'est
+ Aperçu de l'est
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Heure du jour
+ Heure du jour
-
- Couleur du soleil
+ Couleur du soleil
-
- Diamètre apparent du soleil
+ Diamètre apparent du soleil
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Couleur du ciel au zénith
+ Couleur du ciel au zénith
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Couleur de la brume
+ Couleur de la brume
-
- Hauteur apparente de la brume
+ Hauteur apparente de la brume
-
- Facteur de lissage de la brume
+ Facteur de lissage de la brume
FormTerrain
-
- Aperçu de la hauteur (normalisée)
+ Aperçu de la hauteur (normalisée)
Aperçu du rendu (sans ombres)
-
+
Aperçu éclairé (sans texture)
-
- Bruit
+ Bruit
-
- Hauteur
+ Hauteur
-
+
+
+
+
+
+
Echelle
-
+
+
+
+
+
+
@@ -750,33 +955,60 @@ Maintenir Ctrl : Plus rapide
FormTextures
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Aperçu de la couverture
+
+
+
+
+
+
+
+
+
+
Rendu en couleur
-
+
Echantillon éclairé
-
- Bruit de surface
+ Bruit de surface
-
- Hauteur du bruit
+ Hauteur du bruit
-
- Echelle du bruit
+ Echelle du bruit
@@ -791,55 +1023,47 @@ Maintenir Ctrl : Plus rapide
Concentration de la lumière réfléchie
-
- Altitude minimal (adoucie)
+ Altitude minimal (adoucie)
-
- Altitude minimale
+ Altitude minimale
-
+
-
- Altitude maximale
+ Altitude maximale
-
- Altitude maximale (adoucie)
+ Altitude maximale (adoucie)
-
- Pente minimale (adoucie)
+ Pente minimale (adoucie)
-
- Pente minimale
+ Pente minimale
-
- Pente maximale
+ Pente maximale
-
- Pente maximale (adoucie)
+ Pente maximale (adoucie)
FormWater
-
+
Aperçu de la couverture
@@ -848,7 +1072,7 @@ Maintenir Ctrl : Plus rapide
Aperçu du rendu (sans/avec éclairage)
-
+
Hauteur
@@ -865,52 +1089,81 @@ Maintenir Ctrl : Plus rapide
Concentration de la lumière réfléchie
-
+
-
+
Transparence
-
+
Reflets
-
+
Distance maximale de transparence
-
+
Couleur en profondeur
-
+
+
+
+
+
+
+
+
+
+
+
-
+
Distance de filtrage de la lumière
-
-
- Bruit des vagues
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bruit des vagues
+
+
+
Hauteur des vagues
-
+
Echelle des vagues
@@ -918,12 +1171,12 @@ Maintenir Ctrl : Plus rapide
InputBoolean
-
+
Oui
-
+
Non
@@ -931,7 +1184,7 @@ Maintenir Ctrl : Plus rapide
InputCamera
-
+
Editer
@@ -939,7 +1192,7 @@ Maintenir Ctrl : Plus rapide
InputColor
-
+
Editer
@@ -947,7 +1200,7 @@ Maintenir Ctrl : Plus rapide
InputColorGradation
-
+
Editer
@@ -955,15 +1208,28 @@ Maintenir Ctrl : Plus rapide
InputCurve
-
+
Editer
+
+ InputLayers
+
+
+
+
+
+
+
+
+
+
+
InputMaterial
-
+
Editer
@@ -971,7 +1237,7 @@ Maintenir Ctrl : Plus rapide
InputNoise
-
+
Editer
@@ -979,144 +1245,144 @@ Maintenir Ctrl : Plus rapide
MainWindow
-
+
Terrain
-
+
Textures
-
+
Eau
-
+
Atmosphère
-
+
&Ouvrir
-
+
Ctrl+O
-
+
&Explorer (F2)
-
+
F2
-
+
&Rendu
rapide (F5)
-
+
F5
-
+
Caméra
-
+
Voulez-vous commencer un nouveau paysage ? Les modifications non sauvegardées seront perdues.
-
+
Paysages 3D - Nouvelle scène
-
+
Paysages 3D - Choisissez un fichier pour enregistrer la scène
-
-
+
+
Scène Paysages 3D (*.p3d)
-
-
+
+
-
+
-
+
-
+
Voulez-vous charger une scène ? Les modifications non sauvegardées seront perdues.
-
+
Paysages 3D - Charger une scène
-
+
Paysages 3D - Choisissez un fichier de scène à charger
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
- Ciel
+ Ciel
-
+
Nuages
@@ -1144,7 +1409,7 @@ GLib - http://www.gtk.org/
Eclairage
-
+
Rendu
@@ -1153,22 +1418,22 @@ GLib - http://www.gtk.org/
&Scène
-
+
&Nouveau
-
+
Ctrl+N
-
+
&Sauvegarder
-
+
Ctrl+S
@@ -1205,7 +1470,7 @@ GLib - http://www.gtk.org/
Ai&de
-
+
&A propos
@@ -1226,7 +1491,7 @@ GLib - http://www.gtk.org/
Voulez-vous charger un paysage ? Les modifications nons sauvegardées seront perdues.
-
+
Paysages 3D
@@ -1241,4 +1506,136 @@ Crédits :
Développement - Michaël LEMAIRE
+
+ PreviewCloudsCoverage
+
+
+
+
+
+
+
+ PreviewRenderLandscape
+
+
+
+ Nuages
+
+
+
+ PreviewWaterColor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreviewWaterCoverage
+
+
+
+
+
+
+
+ QObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WidgetExplorer
+
+
+
+
+
+
+
+
+ WidgetGlobalFormButtons
+
+
+
+
+
+
+
+
+ Annuler
+
+
+
+
+
+
+
+
+
+ Valider
+
+
diff --git a/data/ui_pictures.qrc b/data/ui_pictures.qrc
index 3c3d55b..189785a 100644
--- a/data/ui_pictures.qrc
+++ b/data/ui_pictures.qrc
@@ -3,5 +3,15 @@
images/apply.png
images/cancel.png
images/revert.png
+ images/explore.png
+ images/render.png
+
+
+ images/tab_atmosphere.png
+ images/tab_clouds.png
+ images/tab_render.png
+ images/tab_terrain.png
+ images/tab_textures.png
+ images/tab_water.png
diff --git a/src/editing/formterrain.cpp b/src/editing/formterrain.cpp
index 36579c3..b5a1967 100644
--- a/src/editing/formterrain.cpp
+++ b/src/editing/formterrain.cpp
@@ -3,7 +3,6 @@
#include
#include
#include "tools.h"
-#include "dialogheightmap.h"
#include "terrain/dialogterrainpainting.h"
#include "rendering/scenery.h"
@@ -78,11 +77,9 @@ void FormTerrain::configChangeEvent()
void FormTerrain::startPainting()
{
DialogTerrainPainting* dialog = new DialogTerrainPainting(this, _definition);
- dialog->exec();
- delete dialog;
-
- /*if (DialogHeightMap::editHeightMap(this, _definition))
+ if (dialog->exec())
{
configChangeEvent();
- }*/
+ }
+ delete dialog;
}
diff --git a/src/editing/mainwindow.cpp b/src/editing/mainwindow.cpp
index 977cdc1..9b7f10a 100644
--- a/src/editing/mainwindow.cpp
+++ b/src/editing/mainwindow.cpp
@@ -20,6 +20,8 @@
#include "formwater.h"
#include "formrender.h"
+#include "terrain/mainterrainform.h"
+
#include "dialogrender.h"
#include "dialogexplorer.h"
@@ -92,6 +94,8 @@ QMainWindow(parent)
QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection);
_forms.append(form);
+ tabs->addTab(new MainTerrainForm(tabs), QIcon(getDataPath("images/tab_terrain.png")), tr("Landscape shape"));
+
form = new FormTextures(tabs);
tabs->addTab(form, QIcon(getDataPath("images/tab_textures.png")), tr("Textures"));
QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection);
diff --git a/src/editing/paysages-qt.pro b/src/editing/paysages-qt.pro
index 41f89b4..c87076f 100644
--- a/src/editing/paysages-qt.pro
+++ b/src/editing/paysages-qt.pro
@@ -1,3 +1,7 @@
+isEmpty(PROJECT_PATH) {
+PROJECT_PATH = ../..
+}
+
TEMPLATE = app
CONFIG += qt
QT += core gui opengl
@@ -19,9 +23,6 @@ win32:LIBS += ../libpaysages.a ../libpaysages_exploring.a -lDevIL -lILU -lILUT -
TRANSLATIONS = $$PROJECT_PATH/data/i18n/paysages_fr.ts
-#system(lupdate paysages-qt.pro)
-#system(lrelease $$TRANSLATIONS)
-
HEADERS += \
widgetheightmap.h \
widgetexplorer.h \
@@ -65,7 +66,8 @@ HEADERS += \
baseexplorerchunk.h \
terrain/dialogterrainpainting.h \
common/widgetglobalformbuttons.h \
- terrain/paintingbrush.h
+ terrain/paintingbrush.h \
+ terrain/mainterrainform.h
SOURCES += \
widgetheightmap.cpp \
@@ -110,11 +112,13 @@ SOURCES += \
baseexplorerchunk.cpp \
terrain/dialogterrainpainting.cpp \
common/widgetglobalformbuttons.cpp \
- terrain/paintingbrush.cpp
+ terrain/paintingbrush.cpp \
+ terrain/mainterrainform.cpp
FORMS += \
terrain/dialogterrainpainting.ui \
- common/widgetglobalformbuttons.ui
+ common/widgetglobalformbuttons.ui \
+ terrain/mainterrainform.ui
RESOURCES += \
../../data/ui_pictures.qrc
diff --git a/src/editing/terrain/dialogterrainpainting.cpp b/src/editing/terrain/dialogterrainpainting.cpp
index 5041ed7..79bf742 100644
--- a/src/editing/terrain/dialogterrainpainting.cpp
+++ b/src/editing/terrain/dialogterrainpainting.cpp
@@ -42,6 +42,7 @@ void DialogTerrainPainting::revert()
void DialogTerrainPainting::brushConfigChanged()
{
+ QLabel* label;
QComboBox* combobox;
QSlider* slider;
@@ -68,6 +69,11 @@ void DialogTerrainPainting::brushConfigChanged()
}
// Update brush description
+ label = findChild("label_brush_description");
+ if (label)
+ {
+ label->setText(getHelpText());
+ }
// Update brush preview
@@ -96,3 +102,9 @@ void DialogTerrainPainting::heightmapChanged()
}
}
}
+
+QString DialogTerrainPainting::getHelpText()
+{
+ QString result = _brush.getHelpText();
+ return result;
+}
diff --git a/src/editing/terrain/dialogterrainpainting.h b/src/editing/terrain/dialogterrainpainting.h
index d45b9da..74d546d 100644
--- a/src/editing/terrain/dialogterrainpainting.h
+++ b/src/editing/terrain/dialogterrainpainting.h
@@ -24,6 +24,8 @@ public slots:
void revert();
private:
+ QString getHelpText();
+
Ui::DialogTerrainPainting *ui;
TerrainDefinition* _terrain_modified;
diff --git a/src/editing/terrain/dialogterrainpainting.ui b/src/editing/terrain/dialogterrainpainting.ui
index b1fb372..85a4e0c 100644
--- a/src/editing/terrain/dialogterrainpainting.ui
+++ b/src/editing/terrain/dialogterrainpainting.ui
@@ -6,8 +6,8 @@
0
0
- 912
- 619
+ 949
+ 618
@@ -31,7 +31,7 @@
-
-
+
1
0
@@ -166,10 +166,28 @@
-
-
+
+
+
+ 0
+ 100
+
+
+
+ QFrame::Panel
+
+
+ QFrame::Sunken
+
{ Brush information }
+
+ Qt::RichText
+
+
+ true
+
20
@@ -188,7 +206,7 @@
-
-
+
200
@@ -318,22 +336,6 @@
-
- input_brush_size
- valueChanged(int)
- DialogTerrainPainting
- brushConfigChanged()
-
-
- 676
- 67
-
-
- 437
- 72
-
-
-
input_brush_smoothing
valueChanged(int)
@@ -350,6 +352,22 @@
+
+ input_brush_mode
+ currentIndexChanged(int)
+ DialogTerrainPainting
+ brushConfigChanged()
+
+
+ 752
+ 42
+
+
+ 437
+ 40
+
+
+
input_brush_strength
valueChanged(int)
@@ -367,18 +385,18 @@
- input_brush_mode
- currentIndexChanged(int)
+ input_brush_size
+ valueChanged(int)
DialogTerrainPainting
brushConfigChanged()
- 752
- 42
+ 676
+ 67
437
- 40
+ 72
@@ -398,22 +416,6 @@
-
- widget_4
- okClicked()
- DialogTerrainPainting
- accept()
-
-
- 816
- 593
-
-
- 683
- 615
-
-
-
widget_4
cancelClicked()
@@ -430,6 +432,22 @@
+
+ widget_4
+ okClicked()
+ DialogTerrainPainting
+ accept()
+
+
+ 816
+ 593
+
+
+ 683
+ 615
+
+
+
widget_4
revertClicked()
diff --git a/src/editing/terrain/mainterrainform.cpp b/src/editing/terrain/mainterrainform.cpp
new file mode 100644
index 0000000..f173d46
--- /dev/null
+++ b/src/editing/terrain/mainterrainform.cpp
@@ -0,0 +1,14 @@
+#include "mainterrainform.h"
+#include "ui_mainterrainform.h"
+
+MainTerrainForm::MainTerrainForm(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::MainTerrainForm)
+{
+ ui->setupUi(this);
+}
+
+MainTerrainForm::~MainTerrainForm()
+{
+ delete ui;
+}
diff --git a/src/editing/terrain/mainterrainform.h b/src/editing/terrain/mainterrainform.h
new file mode 100644
index 0000000..b4d6e84
--- /dev/null
+++ b/src/editing/terrain/mainterrainform.h
@@ -0,0 +1,22 @@
+#ifndef MAINTERRAINFORM_H
+#define MAINTERRAINFORM_H
+
+#include
+
+namespace Ui {
+class MainTerrainForm;
+}
+
+class MainTerrainForm : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit MainTerrainForm(QWidget *parent = 0);
+ ~MainTerrainForm();
+
+private:
+ Ui::MainTerrainForm *ui;
+};
+
+#endif // MAINTERRAINFORM_H
diff --git a/src/editing/terrain/mainterrainform.ui b/src/editing/terrain/mainterrainform.ui
new file mode 100644
index 0000000..e106eed
--- /dev/null
+++ b/src/editing/terrain/mainterrainform.ui
@@ -0,0 +1,398 @@
+
+
+ MainTerrainForm
+
+
+
+ 0
+ 0
+ 1073
+ 662
+
+
+
+ Form
+
+
+
-
+
+
+
+ 15
+
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+ Infinite base shape
+
+
+
-
+
+
+
-
+
+
+ Generate base noise
+
+
+ false
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+ 0
+ 80
+
+
+
+
+ 16777215
+ 150
+
+
+
+
+
+
+
+
+ groupBox_1
+ widget
+
+
+ -
+
+
+ Manual modifications
+
+
+
-
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Sculpt the terrain shape
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ { heightmap info }
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Global modifiers
+
+
+ false
+
+
+
-
+
+
+ <html><head/><body><p><span style=" font-style:italic;">These modifiers change the base shape and manual modifications altogether</span></p></body></html>
+
+
+ Qt::RichText
+
+
+
+ -
+
+
+
-
+
+
+ Scaling
+
+
+
+ -
+
+
+
+ 400
+ 16777215
+
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Height
+
+
+
+ -
+
+
+
+ 400
+ 16777215
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Rendering control
+
+
+
-
+
+
+
-
+
+
+ Shadow smoothing
+
+
+
+ -
+
+
+
+ 400
+ 16777215
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Links to other modules
+
+
+
-
+
+
+
-
+
+
+ Relative water height
+
+
+
+ -
+
+
+
+ 400
+ 16777215
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 500
+ 16777215
+
+
+
+ Go to textures to add small height displacements (rocks...)
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
-
+
+
+ Result preview
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 200
+
+
+
+
+ 200
+ 200
+
+
+
+
+ -
+
+
+ Render preview
+
+
+
+ :/buttons/logo/images/render.png:/buttons/logo/images/render.png
+
+
+
+ -
+
+
+ Explore in 3D
+
+
+
+ :/buttons/logo/images/explore.png:/buttons/logo/images/explore.png
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Actions
+
+
+
-
+
+
+ Revert modifications
+
+
+
+ :/buttons/logo/images/revert.png:/buttons/logo/images/revert.png
+
+
+
+ -
+
+
+ Apply modifications
+
+
+
+ :/buttons/logo/images/apply.png:/buttons/logo/images/apply.png
+
+
+
+
+
+
+
+
+
+
+
+
+ BasePreview
+ QWidget
+
+ 1
+
+
+
+
+
+
+
diff --git a/src/editing/terrain/paintingbrush.cpp b/src/editing/terrain/paintingbrush.cpp
index 4ec7830..8f18651 100644
--- a/src/editing/terrain/paintingbrush.cpp
+++ b/src/editing/terrain/paintingbrush.cpp
@@ -8,6 +8,7 @@ PaintingBrush::PaintingBrush()
_size = 0.0;
_smoothing = 0.0;
_strength = 0.0;
+ _height = 0.0;
_noise = noiseCreateGenerator();
noiseAddLevelsSimple(_noise, 10, 1.0, -0.5, 0.5, 0.5);
}
@@ -79,6 +80,24 @@ void PaintingBrush::drawPreview(QWidget* widget)
}
+QString PaintingBrush::getHelpText()
+{
+ switch (_mode)
+ {
+ case PAINTING_BRUSH_RAISE:
+ return QObject::tr("Left click: raise terrain
Right click: lower terrain");
+ case PAINTING_BRUSH_SMOOTH:
+ return QObject::tr("Left click: add random noise to terrain
Right click: smooth details");
+ case PAINTING_BRUSH_FLATTEN:
+ return QObject::tr("Left click: flatten at height picked with right click
Right click: pick height at center");
+ case PAINTING_BRUSH_FIX_DISCONTINUITIES:
+ return QObject::tr("Left click: fix discontinuities in slope");
+ case PAINTING_BRUSH_RESTORE:
+ return QObject::tr("Left click: cancel all modifications on terrain");
+ }
+ return QString("");
+}
+
void PaintingBrush::applyToTerrain(TerrainDefinition* terrain, double x, double z, double duration, bool reverse)
{
double brush_strength;
@@ -111,6 +130,16 @@ void PaintingBrush::applyToTerrain(TerrainDefinition* terrain, double x, double
terrainBrushAddNoise(terrain->height_map, &brush, _noise, brush_strength * 0.5);
}
break;
+ case PAINTING_BRUSH_FLATTEN:
+ if (reverse)
+ {
+ _height = terrainGetInterpolatedHeight(terrain, x, z, 1);
+ }
+ else
+ {
+ terrainBrushFlatten(terrain->height_map, &brush, _height, brush_strength);
+ }
+ break;
case PAINTING_BRUSH_RESTORE:
terrainBrushReset(terrain->height_map, &brush, brush_strength);
break;
diff --git a/src/editing/terrain/paintingbrush.h b/src/editing/terrain/paintingbrush.h
index dfcd51c..2adf874 100644
--- a/src/editing/terrain/paintingbrush.h
+++ b/src/editing/terrain/paintingbrush.h
@@ -32,6 +32,7 @@ public:
double getInfluence(double relative_x, double relative_z);
void drawPreview(QWidget* widget);
+ QString getHelpText();
void applyToTerrain(TerrainDefinition* terrain, double x, double z, double duration, bool reverse);
@@ -40,6 +41,7 @@ private:
double _size;
double _smoothing;
double _strength;
+ double _height;
NoiseGenerator* _noise;
};
diff --git a/src/editing/widgetheightmap.cpp b/src/editing/widgetheightmap.cpp
index 74898da..2a7120c 100644
--- a/src/editing/widgetheightmap.cpp
+++ b/src/editing/widgetheightmap.cpp
@@ -462,12 +462,12 @@ void WidgetHeightMap::scrollTopCamera(double dx, double dz)
{
if (dx != 0.0)
{
- _target_x += dx;
+ _target_x += dx * _zoom * 0.05;
}
if (dz != 0.0)
{
- _target_z += dz;
+ _target_z += dz * _zoom * 0.05;
}
}
diff --git a/src/editing/widgetheightmap.h b/src/editing/widgetheightmap.h
index f6ba181..64a8781 100644
--- a/src/editing/widgetheightmap.h
+++ b/src/editing/widgetheightmap.h
@@ -16,13 +16,6 @@ typedef struct
int painted;
} _VertexInfo;
-typedef enum
-{
- HEIGHTMAP_BRUSH_RAISE = 0,
- HEIGHTMAP_BRUSH_SMOOTH = 1,
- HEIGHTMAP_BRUSH_RESTORE = 2
-} HeightMapBrushMode;
-
class WidgetHeightMap : public QGLWidget
{
Q_OBJECT
diff --git a/src/rendering/rendering.pro b/src/rendering/rendering.pro
index 9d3468e..c371d24 100644
--- a/src/rendering/rendering.pro
+++ b/src/rendering/rendering.pro
@@ -124,3 +124,5 @@ unix:!symbian {
}
INSTALLS += target
}
+
+FORMS +=
diff --git a/src/rendering/terrain/public.h b/src/rendering/terrain/public.h
index 1fcd994..1670870 100644
--- a/src/rendering/terrain/public.h
+++ b/src/rendering/terrain/public.h
@@ -81,6 +81,7 @@ void terrainBrushElevation(TerrainHeightMap* heightmap, TerrainBrush* brush, dou
void terrainBrushSmooth(TerrainHeightMap* heightmap, TerrainBrush* brush, double value);
void terrainBrushAddNoise(TerrainHeightMap* heightmap, TerrainBrush* brush, NoiseGenerator* generator, double value);
void terrainBrushReset(TerrainHeightMap* heightmap, TerrainBrush* brush, double value);
+void terrainBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double height, double force);
void terrainEndBrushStroke(TerrainHeightMap* heightmap);
#ifdef __cplusplus
diff --git a/src/rendering/terrain/ter_painting.c b/src/rendering/terrain/ter_painting.c
index 1d320bf..95878ac 100644
--- a/src/rendering/terrain/ter_painting.c
+++ b/src/rendering/terrain/ter_painting.c
@@ -508,6 +508,21 @@ void terrainBrushElevation(TerrainHeightMap* heightmap, TerrainBrush* brush, dou
_applyBrush(heightmap, brush, value, NULL, _applyBrushElevation);
}
+static double _applyBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double x, double z, double basevalue, double influence, double force, void* data)
+{
+ UNUSED(heightmap);
+ UNUSED(brush);
+ UNUSED(data);
+
+ double ideal = *((double*)data);
+ return basevalue + (ideal - basevalue) * influence * force;
+}
+
+void terrainBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double height, double force)
+{
+ _applyBrush(heightmap, brush, force, &height, _applyBrushFlatten);
+}
+
static double _applyBrushSmooth(TerrainHeightMap* heightmap, TerrainBrush* brush, double x, double z, double basevalue, double influence, double force, void* data)
{
UNUSED(data);