aboutsummaryrefslogtreecommitdiff
path: root/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.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/FractureSliceSettingsPanel.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/FractureSliceSettingsPanel.cpp')
-rw-r--r--NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp b/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp
new file mode 100644
index 0000000..fa82ee2
--- /dev/null
+++ b/NvBlast/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp
@@ -0,0 +1,105 @@
+#include "FractureSliceSettingsPanel.h"
+#include "ui_FractureSliceSettingsPanel.h"
+#include "ProjectParams.h"
+#include "SimpleScene.h"
+#include "SampleManager.h"
+#include <QtWidgets/QMessageBox>
+
+FractureSliceSettingsPanel::FractureSliceSettingsPanel(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::FractureSliceSettingsPanel)
+{
+ ui->setupUi(this);
+}
+
+FractureSliceSettingsPanel::~FractureSliceSettingsPanel()
+{
+ delete ui;
+}
+
+void FractureSliceSettingsPanel::updateValues()
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+
+ ui->spinBoxNumSlices->setValue(slice.numSlices);
+ ui->spinBoxOffsetVariation->setValue(slice.offsetVariation);
+ ui->spinBoxRotationVariation->setValue(slice.rotationVariation);
+ ui->spinBoxNoiseAmplitude->setValue(slice.noiseAmplitude);
+ ui->spinBoxNoiseFrequency->setValue(slice.noiseFrequency);
+ ui->spinBoxNoiseSeed->setValue(slice.noiseSeed);
+}
+
+void FractureSliceSettingsPanel::on_spinBoxNumSlices_valueChanged(int arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.numSlices = arg1;
+}
+
+void FractureSliceSettingsPanel::on_spinBoxOffsetVariation_valueChanged(double arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.offsetVariation = arg1;
+}
+
+void FractureSliceSettingsPanel::on_spinBoxRotationVariation_valueChanged(double arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.rotationVariation = arg1;
+}
+
+void FractureSliceSettingsPanel::on_spinBoxNoiseAmplitude_valueChanged(double arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.noiseAmplitude = arg1;
+}
+
+void FractureSliceSettingsPanel::on_spinBoxNoiseFrequency_valueChanged(double arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.noiseFrequency = arg1;
+}
+
+void FractureSliceSettingsPanel::on_spinBoxNoiseSeed_valueChanged(int arg1)
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ slice.noiseSeed = arg1;
+}
+
+void FractureSliceSettingsPanel::on_btnApplyFracture_clicked()
+{
+ BPPSlice& slice = BlastProject::ins().getParams().fracture.slice;
+ SliceFractureExecutor executor;
+ executor.applyNoise(slice.noiseAmplitude, slice.noiseAmplitude, 0, 0, 0, slice.noiseSeed);
+ executor.applyConfig(slice.numSlices, slice.numSlices, slice.numSlices, slice.offsetVariation, slice.rotationVariation);
+
+ bool multiplyChunksSelected = false;
+ std::map<BlastAsset*, std::vector<uint32_t>> selectedChunks = SampleManager::ins()->getSelectedChunks();
+ std::map<BlastAsset*, std::vector<uint32_t>>::iterator itrAssetSelectedChunks = selectedChunks.begin();
+
+ if (selectedChunks.size() > 1)
+ {
+ multiplyChunksSelected = true;
+ }
+ else if (selectedChunks.size() == 1 && itrAssetSelectedChunks->second.size() > 1)
+ {
+ multiplyChunksSelected = true;
+ }
+ else if((selectedChunks.size() == 1 && itrAssetSelectedChunks->second.size() == 0) || (selectedChunks.size() == 0))
+ {
+ return;
+ }
+
+ if (multiplyChunksSelected)
+ {
+ QMessageBox::warning(NULL, "Blast Tool", "Now, this tool can only fracture one chunk!");
+ return;
+ }
+
+ executor.setSourceAsset(itrAssetSelectedChunks->first);
+ executor.setTargetChunk(itrAssetSelectedChunks->second.at(0));
+ executor.execute();
+
+ //VoronoiFractureExecutor executor;
+ //executor.setTargetChunk(0);
+ //executor.execute();
+}