aboutsummaryrefslogtreecommitdiff
path: root/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2017-02-21 12:07:59 -0800
committerBryan Galdrikian <[email protected]>2017-02-21 12:07:59 -0800
commit446ce137c6823ba9eff273bdafdaf266287c7c98 (patch)
treed20aab3e2ed08d7b3ca71c2f40db6a93ea00c459 /NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp
downloadblast-1.0.0-beta.tar.xz
blast-1.0.0-beta.zip
first commitv1.0.0-beta
Diffstat (limited to 'NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp')
-rw-r--r--NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp155
1 files changed, 155 insertions, 0 deletions
diff --git a/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp b/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp
new file mode 100644
index 0000000..ea24278
--- /dev/null
+++ b/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureCutoutSettingsPanel.cpp
@@ -0,0 +1,155 @@
+#include "FractureCutoutSettingsPanel.h"
+#include "ui_FractureCutoutSettingsPanel.h"
+#include "ProjectParams.h"
+#include <QtWidgets/QInputDialog>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QMessageBox>
+#include <QtCore/QFileInfo>
+#include "AppMainWindow.h"
+
+FractureCutoutSettingsPanel::FractureCutoutSettingsPanel(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::FractureCutoutSettingsPanel)
+{
+ ui->setupUi(this);
+}
+
+FractureCutoutSettingsPanel::~FractureCutoutSettingsPanel()
+{
+ delete ui;
+}
+
+void FractureCutoutSettingsPanel::updateValues()
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+
+ _updateTextureListWidget();
+
+ ui->comboBoxCutoutType->setCurrentIndex(cutoutProjection.cutoutType);
+ ui->spinBoxPixelThreshold->setValue(cutoutProjection.pixelThreshold);
+ ui->checkBoxTiled->setChecked(cutoutProjection.tiled);
+ ui->checkBoxInvertU->setChecked(cutoutProjection.invertU);
+ ui->checkBoxInvertV->setChecked(cutoutProjection.invertV);
+}
+
+void FractureCutoutSettingsPanel::on_btnAddTexture_clicked()
+{
+ QString texName = AppMainWindow::Inst().OpenTextureFile();
+
+ if (texName.isEmpty())
+ return;
+
+ QFileInfo fileInfo(texName);
+ QByteArray ba = fileInfo.absoluteFilePath().toLocal8Bit();
+ const char* filePath = (const char*)(ba);
+
+ if (!BlastProject::ins().isCutoutTextureNameExist(texName.toUtf8().data()))
+ {
+ BlastProject::ins().addCutoutTexture(filePath);
+ _updateTextureListWidget();
+ ui->listWidget->setCurrentRow(ui->listWidget->count() - 1);
+ }
+ else
+ {
+ QMessageBox::warning(this, "Blast Tool", "The texture you selected is already exist!");
+ }
+}
+
+void FractureCutoutSettingsPanel::on_btnReloadTexture_clicked()
+{
+
+}
+
+void FractureCutoutSettingsPanel::on_btnRemoveTexture_clicked()
+{
+ if (ui->listWidget->currentRow() != -1)
+ {
+ QListWidgetItem *item = ui->listWidget->currentItem();
+ QString texture = _getTexturePathByName(item->text());
+ QByteArray ba = texture.toLocal8Bit();
+ BlastProject::ins().removeCutoutTexture(ba.data());
+ _updateTextureListWidget();
+ }
+}
+
+void FractureCutoutSettingsPanel::on_listWidget_currentRowChanged(int currentRow)
+{
+
+}
+
+void FractureCutoutSettingsPanel::on_btnTextureMap_clicked()
+{
+
+}
+
+void FractureCutoutSettingsPanel::on_comboBoxCutoutType_currentIndexChanged(int index)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ cutoutProjection.cutoutType = index;
+}
+
+void FractureCutoutSettingsPanel::on_spinBoxPixelThreshold_valueChanged(int arg1)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ cutoutProjection.pixelThreshold = arg1;
+}
+
+void FractureCutoutSettingsPanel::on_checkBoxTiled_stateChanged(int arg1)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ cutoutProjection.tiled = (arg1 != 0 ? true : false);
+}
+
+void FractureCutoutSettingsPanel::on_checkBoxInvertU_stateChanged(int arg1)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ cutoutProjection.invertU = (arg1 != 0 ? true : false);
+}
+
+void FractureCutoutSettingsPanel::on_checkBoxInvertV_stateChanged(int arg1)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ cutoutProjection.invertV = (arg1 != 0 ? true : false);
+}
+
+void FractureCutoutSettingsPanel::on_btnFitToObject_clicked()
+{
+
+}
+
+void FractureCutoutSettingsPanel::on_btnApplyFracture_clicked()
+{
+
+}
+
+QString FractureCutoutSettingsPanel::_getTexturePathByName(const QString& name)
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+ BPPStringArray& textureArray = cutoutProjection.textures;
+
+ int count = textureArray.arraySizes[0];
+ for (int i = 0; i < count; ++i)
+ {
+ QFileInfo fileInfo(textureArray.buf[i].buf);
+ if (fileInfo.baseName() == name)
+ return textureArray.buf[i].buf;
+ }
+
+ return "";
+}
+
+void FractureCutoutSettingsPanel::_updateTextureListWidget()
+{
+ BPPCutoutProjection& cutoutProjection = BlastProject::ins().getParams().fracture.cutoutProjection;
+
+ ui->listWidget->clear();
+ QStringList items;
+ for (int i = 0; i < cutoutProjection.textures.arraySizes[0]; ++i)
+ {
+ QFileInfo fileInfo(cutoutProjection.textures.buf[i].buf);
+ QByteArray ba = fileInfo.baseName().toLocal8Bit();
+ const char* texture = (const char*)(ba);
+ items.append(texture);
+ }
+ ui->listWidget->addItems(items);
+}