aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp
diff options
context:
space:
mode:
authorAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
committerAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
commit236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch)
treee486f2fa39dba203563895541e92c60ed3e25759 /tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp
parentAdded screens to welcome page (diff)
downloadblast-236f03c0b9a4982328ed1201978f7f69d192d9b2.tar.xz
blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.zip
Blast 1.1 release (windows / linux)
see docs/release_notes.txt for details
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp')
-rw-r--r--tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp153
1 files changed, 105 insertions, 48 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp b/tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp
index e52dfb2..5d82ce5 100644
--- a/tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp
+++ b/tools/ArtistTools/source/BlastPlugin/Window/DefaultDamagePanel.cpp
@@ -2,12 +2,42 @@
#include "ui_DefaultDamagePanel.h"
#include "ProjectParams.h"
#include "BlastSceneTree.h"
+#include <float.h>
+
+#include "DamageToolController.h"
+
+DefaultDamagePanel* gDefaultDamagePanel = nullptr;
+DefaultDamagePanel* DefaultDamagePanel::ins()
+{
+ return gDefaultDamagePanel;
+}
+
+QComboBox* DefaultDamagePanel::getDamageProfile()
+{
+ return ui->comboBoxDamageProfile;
+}
+
+void DefaultDamagePanel::setUpdateData(bool bUpdateData)
+{
+ _updateData = bUpdateData;
+}
DefaultDamagePanel::DefaultDamagePanel(QWidget *parent) :
QWidget(parent),
- ui(new Ui::DefaultDamagePanel)
+ ui(new Ui::DefaultDamagePanel),
+ _updateData(true)
{
+ gDefaultDamagePanel = this;
+
ui->setupUi(this);
+
+ _updateData = false;
+ ui->spinBoxDamageAmount->setRange(0.0f, DBL_MAX);
+ ui->spinBoxExplosiveImpulse->setRange(0.0f, DBL_MAX);
+ ui->spinBoxDamageRadius->setRange(0.0f, DBL_MAX);
+ ui->spinBoxStressDamageForce->setRange(0.0f, DBL_MAX);
+ ui->checkBoxDamageContinuously->setChecked(false);
+ _updateData = true;
}
DefaultDamagePanel::~DefaultDamagePanel()
@@ -17,23 +47,29 @@ DefaultDamagePanel::~DefaultDamagePanel()
void DefaultDamagePanel::updateValues()
{
- if (_selectedAssets.size() > 0)
- {
- BPPDefaultDamage& damage = _selectedAssets[0]->defaultDamage;
-
- ui->spinBoxMinRadius->setValue(damage.minRadius);
- ui->spinBoxMaxRadius->setValue(damage.maxRadius);
- ui->comboBoxFallOff->setCurrentIndex(damage.FallOff);
- ui->spinBoxMaxChunkSpeed->setValue(damage.maxChunkSpeed);
+ _updateData = false;
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ if (damage.damageStructs.arraySizes[0] > 0)
+ {
+ uint32_t damageProfile = damage.damageProfile;
+ BPPDamageStruct& damageStruct = damage.damageStructs.buf[damageProfile];
+ ui->spinBoxDamageAmount->setValue(damage.damageAmount);
+ ui->spinBoxExplosiveImpulse->setValue(damage.explosiveImpulse);
+ ui->spinBoxStressDamageForce->setValue(damage.stressDamageForce);
+ ui->comboBoxDamageProfile->setCurrentIndex(damageProfile);
+ ui->spinBoxDamageRadius->setValue(damageStruct.damageRadius);
+ ui->checkBoxDamageContinuously->setChecked(damageStruct.continuously);
}
else
{
- ui->spinBoxMinRadius->setValue(0.0f);
- ui->spinBoxMaxRadius->setValue(0.0f);
- ui->checkBoxMaxRadius->setChecked(false);
- ui->comboBoxFallOff->setCurrentIndex(-1);
- ui->spinBoxMaxChunkSpeed->setValue(0.0f);
+ ui->spinBoxDamageAmount->setValue(0);
+ ui->spinBoxExplosiveImpulse->setValue(0);
+ ui->spinBoxDamageRadius->setValue(0);
+ ui->spinBoxStressDamageForce->setValue(0);
+ ui->checkBoxDamageContinuously->setChecked(false);
+ ui->comboBoxDamageProfile->setCurrentIndex(0);
}
+ _updateData = true;
}
void DefaultDamagePanel::dataSelected(std::vector<BlastNode*> selections)
@@ -52,53 +88,74 @@ void DefaultDamagePanel::dataSelected(std::vector<BlastNode*> selections)
updateValues();
}
-void DefaultDamagePanel::on_spinBoxMinRadius_valueChanged(double arg1)
+void DefaultDamagePanel::on_spinBoxDamageAmount_valueChanged(double arg1)
{
- for (size_t i = 0; i < _selectedAssets.size(); ++i)
- {
- BPPDefaultDamage& damage = _selectedAssets[i]->defaultDamage;
- damage.minRadius = arg1;
- }
+ if (!_updateData)
+ return;
+
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ damage.damageAmount = arg1;
+
+ DamageToolController::ins()->setDamageAmount(arg1);
}
-void DefaultDamagePanel::on_spinBoxMaxRadius_valueChanged(double arg1)
+void DefaultDamagePanel::on_spinBoxExplosiveImpulse_valueChanged(double arg1)
{
- for (size_t i = 0; i < _selectedAssets.size(); ++i)
- {
- BPPDefaultDamage& damage = _selectedAssets[i]->defaultDamage;
+ if (!_updateData)
+ return;
- damage.maxRadius = arg1;
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ damage.explosiveImpulse = arg1;
- if (arg1 < damage.minRadius)
- {
- damage.maxRadius = damage.minRadius;
- }
- }
+ DamageToolController::ins()->setExplosiveImpulse(arg1);
}
-void DefaultDamagePanel::on_checkBoxMaxRadius_stateChanged(int arg1)
+void DefaultDamagePanel::on_spinBoxDamageRadius_valueChanged(double arg1)
{
- for (size_t i = 0; i < _selectedAssets.size(); ++i)
- {
- BPPDefaultDamage& damage = _selectedAssets[i]->defaultDamage;
- damage.maxRadiusEnable = (arg1 != 0 ? true: false);
- }
+ if (!_updateData)
+ return;
+
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ uint32_t damageProfile = damage.damageProfile;
+ BPPDamageStruct& damageStruct = damage.damageStructs.buf[damageProfile];
+ damageStruct.damageRadius = arg1;
+
+ DamageToolController::ins()->setRadius(arg1);
}
-void DefaultDamagePanel::on_comboBoxFallOff_currentIndexChanged(int index)
+void DefaultDamagePanel::on_spinBoxStressDamageForce_valueChanged(double arg1)
{
- for (size_t i = 0; i < _selectedAssets.size(); ++i)
- {
- BPPDefaultDamage& damage = _selectedAssets[i]->defaultDamage;
- damage.FallOff = index;
- }
+ if (!_updateData)
+ return;
+
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ damage.stressDamageForce = arg1;
+
+ DamageToolController::ins()->setStressForceFactor(arg1);
}
-void DefaultDamagePanel::on_spinBoxMaxChunkSpeed_valueChanged(double arg1)
+void DefaultDamagePanel::on_comboBoxDamageProfile_currentIndexChanged(int index)
{
- for (size_t i = 0; i < _selectedAssets.size(); ++i)
- {
- BPPDefaultDamage& damage = _selectedAssets[i]->defaultDamage;
- damage.maxChunkSpeed = arg1;
- }
+ if (!_updateData)
+ return;
+
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ damage.damageProfile = index;
+
+ DamageToolController::ins()->setDamagerIndex(index);
+
+ updateValues();
+}
+
+void DefaultDamagePanel::on_checkBoxDamageContinuously_stateChanged(int arg1)
+{
+ if (!_updateData)
+ return;
+
+ BPPDefaultDamage& damage = BlastProject::ins().getParams().defaultDamage;
+ uint32_t damageProfile = damage.damageProfile;
+ BPPDamageStruct& damageStruct = damage.damageStructs.buf[damageProfile];
+ damageStruct.continuously = arg1;
+
+ DamageToolController::ins()->setDamageWhilePressed(arg1);
}