diff options
| author | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
| commit | e1bf674c16e3c8472b29574159c789cd3f0c64e0 (patch) | |
| tree | 9f0cfce09c71a2c27ff19589fcad6cd83504477c /tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp | |
| parent | first commit (diff) | |
| download | blast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.tar.xz blast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.zip | |
Updating to [email protected] and [email protected] with a new directory structure.
NvBlast folder is gone, files have been moved to top level directory. README is changed to reflect this.
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp')
| -rw-r--r-- | tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp b/tools/ArtistTools/source/BlastPlugin/Window/FractureSliceSettingsPanel.cpp new file mode 100644 index 0000000..fa82ee2 --- /dev/null +++ b/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(); +} |