Fixed: (ovqt) If switch between the particle systems in a workspace erroneously marked that the particle system has been changed.
This commit is contained in:
parent
cc0eb26a77
commit
6dfa34c9d9
3 changed files with 257 additions and 184 deletions
|
@ -905,5 +905,118 @@
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>autoLODCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>settingsPushButton</receiver>
|
||||||
|
<slot>setEnabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>167</x>
|
||||||
|
<y>166</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>283</x>
|
||||||
|
<y>168</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>enablePBBCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>bboxGroupBox</receiver>
|
||||||
|
<slot>setEnabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>99</x>
|
||||||
|
<y>30</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>97</x>
|
||||||
|
<y>52</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>autoCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>xDoubleSpinBox</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>55</x>
|
||||||
|
<y>62</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>66</x>
|
||||||
|
<y>88</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>autoCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>yDoubleSpinBox</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>60</x>
|
||||||
|
<y>59</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>162</x>
|
||||||
|
<y>90</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>autoCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>zDoubleSpinBox</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>57</x>
|
||||||
|
<y>65</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>254</x>
|
||||||
|
<y>90</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>autoCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>incBboxPushButton</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>75</x>
|
||||||
|
<y>72</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>65</x>
|
||||||
|
<y>123</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>autoCheckBox</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>decBboxPushButton</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>63</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>108</x>
|
||||||
|
<y>120</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -40,78 +40,6 @@ using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT {
|
||||||
|
|
||||||
// WRAPPERS IMPLEMENTATION
|
|
||||||
|
|
||||||
float CTimeThresholdWrapper::get(void) const
|
|
||||||
{
|
|
||||||
NL3D::TAnimationTime t;
|
|
||||||
uint32 max;
|
|
||||||
bool csd;
|
|
||||||
bool klt;
|
|
||||||
PS->getAccurateIntegrationParams(t, max, csd, klt);
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CTimeThresholdWrapper::set(const float &tt)
|
|
||||||
{
|
|
||||||
NL3D::TAnimationTime t;
|
|
||||||
uint32 max;
|
|
||||||
bool csd;
|
|
||||||
bool klt;
|
|
||||||
PS->getAccurateIntegrationParams(t, max, csd, klt);
|
|
||||||
PS->setAccurateIntegrationParams(tt, max, csd, klt);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 CMaxNbIntegrationWrapper::get(void) const
|
|
||||||
{
|
|
||||||
NL3D::TAnimationTime t;
|
|
||||||
uint32 max;
|
|
||||||
bool csd;
|
|
||||||
bool klt;
|
|
||||||
PS->getAccurateIntegrationParams(t, max, csd, klt);
|
|
||||||
return max;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMaxNbIntegrationWrapper::set(const uint32 &nmax)
|
|
||||||
{
|
|
||||||
NL3D::TAnimationTime t;
|
|
||||||
uint32 max;
|
|
||||||
bool csd;
|
|
||||||
bool klt;
|
|
||||||
PS->getAccurateIntegrationParams(t, max, csd, klt);
|
|
||||||
PS->setAccurateIntegrationParams(t, nmax, csd, klt);
|
|
||||||
}
|
|
||||||
|
|
||||||
float CUserParamWrapper::get(void) const
|
|
||||||
{
|
|
||||||
return PS->getUserParam(Index);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CUserParamWrapper::set(const float &v)
|
|
||||||
{
|
|
||||||
PS->setUserParam(Index, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
float CMaxViewDistWrapper::get(void) const
|
|
||||||
{
|
|
||||||
return PS->getMaxViewDist();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMaxViewDistWrapper::set(const float &d)
|
|
||||||
{
|
|
||||||
PS->setMaxViewDist(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
float CLODRatioWrapper::get(void) const
|
|
||||||
{
|
|
||||||
return PS->getLODRatio();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CLODRatioWrapper::set(const float &v)
|
|
||||||
{
|
|
||||||
PS->setLODRatio(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void chooseGlobalUserParam(uint userParam, NL3D::CParticleSystem *ps, QWidget *parent)
|
static void chooseGlobalUserParam(uint userParam, NL3D::CParticleSystem *ps, QWidget *parent)
|
||||||
{
|
{
|
||||||
nlassert(ps);
|
nlassert(ps);
|
||||||
|
@ -131,40 +59,32 @@ CParticleSystemPage::CParticleSystemPage(QWidget *parent)
|
||||||
|
|
||||||
_ui.timeThresholdWidget->setRange(0.005f, 0.3f);
|
_ui.timeThresholdWidget->setRange(0.005f, 0.3f);
|
||||||
_ui.timeThresholdWidget->enableLowerBound(0, true);
|
_ui.timeThresholdWidget->enableLowerBound(0, true);
|
||||||
_ui.timeThresholdWidget->setWrapper(&_TimeThresholdWrapper);
|
|
||||||
|
|
||||||
_ui.maxStepsWidget->setRange(0, 4);
|
_ui.maxStepsWidget->setRange(0, 4);
|
||||||
_ui.maxStepsWidget->enableLowerBound(0, true);
|
_ui.maxStepsWidget->enableLowerBound(0, true);
|
||||||
_ui.maxStepsWidget->setWrapper(&_MaxNbIntegrationWrapper);
|
|
||||||
|
|
||||||
_ui.userParamWidget_1->setRange(0, 1.0f);
|
_ui.userParamWidget_1->setRange(0, 1.0f);
|
||||||
_ui.userParamWidget_1->enableLowerBound(0, false);
|
_ui.userParamWidget_1->enableLowerBound(0, false);
|
||||||
_ui.userParamWidget_1->enableUpperBound(1, false);
|
_ui.userParamWidget_1->enableUpperBound(1, false);
|
||||||
_ui.userParamWidget_1->setWrapper(&_UserParamWrapper[0]);
|
|
||||||
|
|
||||||
_ui.userParamWidget_2->setRange(0, 1.0f);
|
_ui.userParamWidget_2->setRange(0, 1.0f);
|
||||||
_ui.userParamWidget_2->enableLowerBound(0, false);
|
_ui.userParamWidget_2->enableLowerBound(0, false);
|
||||||
_ui.userParamWidget_2->enableUpperBound(1, false);
|
_ui.userParamWidget_2->enableUpperBound(1, false);
|
||||||
_ui.userParamWidget_2->setWrapper(&_UserParamWrapper[1]);
|
|
||||||
|
|
||||||
_ui.userParamWidget_3->setRange(0, 1.0f);
|
_ui.userParamWidget_3->setRange(0, 1.0f);
|
||||||
_ui.userParamWidget_3->enableLowerBound(0, false);
|
_ui.userParamWidget_3->enableLowerBound(0, false);
|
||||||
_ui.userParamWidget_3->enableUpperBound(1, false);
|
_ui.userParamWidget_3->enableUpperBound(1, false);
|
||||||
_ui.userParamWidget_3->setWrapper(&_UserParamWrapper[2]);
|
|
||||||
|
|
||||||
_ui.userParamWidget_4->setRange(0, 1.0f);
|
_ui.userParamWidget_4->setRange(0, 1.0f);
|
||||||
_ui.userParamWidget_4->enableLowerBound(0, false);
|
_ui.userParamWidget_4->enableLowerBound(0, false);
|
||||||
_ui.userParamWidget_4->enableUpperBound(1, false);
|
_ui.userParamWidget_4->enableUpperBound(1, false);
|
||||||
_ui.userParamWidget_4->setWrapper(&_UserParamWrapper[3]);
|
|
||||||
|
|
||||||
_ui.maxViewDistWidget->setRange(0, 400.f);
|
_ui.maxViewDistWidget->setRange(0, 400.f);
|
||||||
_ui.maxViewDistWidget->enableLowerBound(0, true);
|
_ui.maxViewDistWidget->enableLowerBound(0, true);
|
||||||
_ui.maxViewDistWidget->setWrapper(&_MaxViewDistWrapper);
|
|
||||||
|
|
||||||
_ui.lodRatioWidget->setRange(0, 1.f);
|
_ui.lodRatioWidget->setRange(0, 1.f);
|
||||||
_ui.lodRatioWidget->enableLowerBound(0, true);
|
_ui.lodRatioWidget->enableLowerBound(0, true);
|
||||||
_ui.lodRatioWidget->enableUpperBound(1, true);
|
_ui.lodRatioWidget->enableUpperBound(1, true);
|
||||||
_ui.lodRatioWidget->setWrapper(&_LODRatioWrapper);
|
|
||||||
|
|
||||||
_ui.colorWidget->setSchemeWrapper(&_GlobalColorWrapper);
|
_ui.colorWidget->setSchemeWrapper(&_GlobalColorWrapper);
|
||||||
_ui.colorWidget->enableMemoryScheme(false);
|
_ui.colorWidget->enableMemoryScheme(false);
|
||||||
|
@ -174,18 +94,27 @@ CParticleSystemPage::CParticleSystemPage(QWidget *parent)
|
||||||
_ui.colorWidget->init();
|
_ui.colorWidget->init();
|
||||||
_ui.colorWidget->hide();
|
_ui.colorWidget->hide();
|
||||||
|
|
||||||
for (uint k = 0; k < NL3D::MaxPSUserParam; ++k)
|
// Integration tab
|
||||||
_UserParamWrapper[k].Index = k;
|
|
||||||
|
|
||||||
connect(_ui.globalLightCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setGlobalLight(bool)));
|
|
||||||
connect(_ui.loadBalancingCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setLoadBalancing(bool)));
|
connect(_ui.loadBalancingCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setLoadBalancing(bool)));
|
||||||
connect(_ui.integrationCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setIntegration(bool)));
|
connect(_ui.integrationCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setIntegration(bool)));
|
||||||
connect(_ui.motionSlowDownCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setMotionSlowDown(bool)));
|
connect(_ui.motionSlowDownCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setMotionSlowDown(bool)));
|
||||||
connect(_ui.lockPushButton ,SIGNAL(toggled(bool)), this, SLOT(setLock(bool)));
|
connect(_ui.lockPushButton ,SIGNAL(toggled(bool)), this, SLOT(setLock(bool)));
|
||||||
|
|
||||||
|
connect(_ui.timeThresholdWidget ,SIGNAL(valueChanged(float)), this, SLOT(setTimeThreshold(float)));
|
||||||
|
connect(_ui.maxStepsWidget ,SIGNAL(valueChanged(uint32)), this, SLOT(setMaxSteps(uint32)));
|
||||||
|
|
||||||
|
// User param tab
|
||||||
connect(_ui.globalPushButton_1 ,SIGNAL(clicked()), this, SLOT(setGloabal1()));
|
connect(_ui.globalPushButton_1 ,SIGNAL(clicked()), this, SLOT(setGloabal1()));
|
||||||
connect(_ui.globalPushButton_2 ,SIGNAL(clicked()), this, SLOT(setGloabal2()));
|
connect(_ui.globalPushButton_2 ,SIGNAL(clicked()), this, SLOT(setGloabal2()));
|
||||||
connect(_ui.globalPushButton_3 ,SIGNAL(clicked()), this, SLOT(setGloabal3()));
|
connect(_ui.globalPushButton_3 ,SIGNAL(clicked()), this, SLOT(setGloabal3()));
|
||||||
connect(_ui.globalPushButton_4 ,SIGNAL(clicked()), this, SLOT(setGloabal4()));
|
connect(_ui.globalPushButton_4 ,SIGNAL(clicked()), this, SLOT(setGloabal4()));
|
||||||
|
|
||||||
|
connect(_ui.userParamWidget_1 ,SIGNAL(valueChanged(float)), this, SLOT(setUserParam1(float)));
|
||||||
|
connect(_ui.userParamWidget_2 ,SIGNAL(valueChanged(float)), this, SLOT(setUserParam2(float)));
|
||||||
|
connect(_ui.userParamWidget_3 ,SIGNAL(valueChanged(float)), this, SLOT(setUserParam3(float)));
|
||||||
|
connect(_ui.userParamWidget_4 ,SIGNAL(valueChanged(float)), this, SLOT(setUserParam4(float)));
|
||||||
|
|
||||||
|
// BBox tab
|
||||||
connect(_ui.enablePBBCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setEnableBbox(bool)));
|
connect(_ui.enablePBBCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setEnableBbox(bool)));
|
||||||
connect(_ui.autoCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setAutoBbox(bool)));
|
connect(_ui.autoCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setAutoBbox(bool)));
|
||||||
connect(_ui.resetPushButton ,SIGNAL(clicked()), this, SLOT(resetBbox()));
|
connect(_ui.resetPushButton ,SIGNAL(clicked()), this, SLOT(resetBbox()));
|
||||||
|
@ -194,11 +123,21 @@ CParticleSystemPage::CParticleSystemPage(QWidget *parent)
|
||||||
connect(_ui.xDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setXBbox(double)));
|
connect(_ui.xDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setXBbox(double)));
|
||||||
connect(_ui.yDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setYBbox(double)));
|
connect(_ui.yDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setYBbox(double)));
|
||||||
connect(_ui.zDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setZBbox(double)));
|
connect(_ui.zDoubleSpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setZBbox(double)));
|
||||||
connect(_ui.editGlobalColorCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setEditGlobalColor(bool)));
|
|
||||||
connect(_ui.presetBehaviourComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setPresetBehaviour(int)));
|
// LOD param tab
|
||||||
connect(_ui.sharableCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setSharable(bool)));
|
connect(_ui.sharableCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setSharable(bool)));
|
||||||
connect(_ui.autoLODCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setAutoLOD(bool)));
|
connect(_ui.autoLODCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setAutoLOD(bool)));
|
||||||
connect(_ui.settingsPushButton ,SIGNAL(clicked()), this, SLOT(settings()));
|
connect(_ui.settingsPushButton ,SIGNAL(clicked()), this, SLOT(settings()));
|
||||||
|
|
||||||
|
connect(_ui.maxViewDistWidget ,SIGNAL(valueChanged(float)), this, SLOT(setMaxViewDist(float)));
|
||||||
|
connect(_ui.lodRatioWidget ,SIGNAL(valueChanged(float)), this, SLOT(setLodRatio(float)));
|
||||||
|
|
||||||
|
// Global color tab
|
||||||
|
connect(_ui.editGlobalColorCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setEditGlobalColor(bool)));
|
||||||
|
connect(_ui.globalLightCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setGlobalLight(bool)));
|
||||||
|
|
||||||
|
// Life mgt param tab
|
||||||
|
connect(_ui.presetBehaviourComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setPresetBehaviour(int)));
|
||||||
connect(_ui.modelRemovedCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setModelRemoved(bool)));
|
connect(_ui.modelRemovedCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setModelRemoved(bool)));
|
||||||
connect(_ui.psResourceCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setPSResource(bool)));
|
connect(_ui.psResourceCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setPSResource(bool)));
|
||||||
connect(_ui.lifeTimeUpdateCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setLifeTimeUpdate(bool)));
|
connect(_ui.lifeTimeUpdateCheckBox ,SIGNAL(toggled(bool)), this, SLOT(setLifeTimeUpdate(bool)));
|
||||||
|
@ -207,6 +146,8 @@ CParticleSystemPage::CParticleSystemPage(QWidget *parent)
|
||||||
connect(_ui.animTypeComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setAnimType(int)));
|
connect(_ui.animTypeComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setAnimType(int)));
|
||||||
connect(_ui.dieComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setDie(int)));
|
connect(_ui.dieComboBox ,SIGNAL(currentIndexChanged(int)), this, SLOT(setDie(int)));
|
||||||
connect(_ui.afterDelaySpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setAfterDelay(double)));
|
connect(_ui.afterDelaySpinBox ,SIGNAL(valueChanged(double)), this, SLOT(setAfterDelay(double)));
|
||||||
|
|
||||||
|
enabledModifiedFlag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CParticleSystemPage::~CParticleSystemPage()
|
CParticleSystemPage::~CParticleSystemPage()
|
||||||
|
@ -216,54 +157,43 @@ CParticleSystemPage::~CParticleSystemPage()
|
||||||
void CParticleSystemPage::setEditedParticleSystem(CWorkspaceNode *node)
|
void CParticleSystemPage::setEditedParticleSystem(CWorkspaceNode *node)
|
||||||
{
|
{
|
||||||
_Node = node;
|
_Node = node;
|
||||||
// load settings Time threshold.
|
enabledModifiedFlag = false;
|
||||||
_TimeThresholdWrapper.OwnerNode = _Node;
|
|
||||||
_TimeThresholdWrapper.PS = _Node->getPSPointer();
|
|
||||||
_ui.timeThresholdWidget->updateUi();
|
|
||||||
|
|
||||||
// load settings Max steps.
|
|
||||||
_MaxNbIntegrationWrapper.OwnerNode = _Node;
|
|
||||||
_MaxNbIntegrationWrapper.PS = _Node->getPSPointer();
|
|
||||||
_ui.maxStepsWidget->updateUi();
|
|
||||||
|
|
||||||
// load settings User Param
|
|
||||||
for (uint k = 0; k < NL3D::MaxPSUserParam; ++k)
|
|
||||||
{
|
|
||||||
_UserParamWrapper[k].OwnerNode = _Node;
|
|
||||||
_UserParamWrapper[k].PS = _Node->getPSPointer();
|
|
||||||
}
|
|
||||||
|
|
||||||
_ui.userParamWidget_1->updateUi();
|
|
||||||
_ui.userParamWidget_2->updateUi();
|
|
||||||
_ui.userParamWidget_3->updateUi();
|
|
||||||
_ui.userParamWidget_4->updateUi();
|
|
||||||
|
|
||||||
// load settings Max view dist.
|
|
||||||
_MaxViewDistWrapper.OwnerNode = _Node;
|
|
||||||
_MaxViewDistWrapper.PS = _Node->getPSPointer();
|
|
||||||
_ui.maxViewDistWidget->updateUi();
|
|
||||||
|
|
||||||
// load settings LOD Ratio.
|
|
||||||
_LODRatioWrapper.OwnerNode = _Node;
|
|
||||||
_LODRatioWrapper.PS = _Node->getPSPointer();
|
|
||||||
_ui.lodRatioWidget->updateUi();
|
|
||||||
|
|
||||||
// Integration
|
|
||||||
_ui.integrationCheckBox->setChecked(_Node->getPSPointer()->isAccurateIntegrationEnabled());
|
|
||||||
_ui.loadBalancingCheckBox->setChecked(_Node->getPSPointer()->isLoadBalancingEnabled());
|
|
||||||
_ui.globalLightCheckBox->setChecked(_Node->getPSPointer()->getForceGlobalColorLightingFlag());
|
|
||||||
|
|
||||||
NL3D::TAnimationTime t;
|
NL3D::TAnimationTime t;
|
||||||
uint32 max;
|
uint32 max;
|
||||||
bool csd;
|
bool csd;
|
||||||
bool klt;
|
bool klt;
|
||||||
_Node->getPSPointer()->getAccurateIntegrationParams(t, max, csd, klt);
|
_Node->getPSPointer()->getAccurateIntegrationParams(t, max, csd, klt);
|
||||||
|
|
||||||
|
// Update param Time threshold.
|
||||||
|
_ui.timeThresholdWidget->setValue(t, false);
|
||||||
|
|
||||||
|
// Update param Max steps.
|
||||||
|
_ui.maxStepsWidget->setValue(max, false);
|
||||||
|
|
||||||
|
// Update param User Param
|
||||||
|
_ui.userParamWidget_1->setValue(_Node->getPSPointer()->getUserParam(0) , false);
|
||||||
|
_ui.userParamWidget_2->setValue(_Node->getPSPointer()->getUserParam(1) , false);
|
||||||
|
_ui.userParamWidget_3->setValue(_Node->getPSPointer()->getUserParam(2) , false);
|
||||||
|
_ui.userParamWidget_4->setValue(_Node->getPSPointer()->getUserParam(3) , false);
|
||||||
|
|
||||||
|
// Update param Max view dist.
|
||||||
|
_ui.maxViewDistWidget->setValue(_Node->getPSPointer()->getMaxViewDist(), false);
|
||||||
|
|
||||||
|
// Update param LOD Ratio.
|
||||||
|
_ui.lodRatioWidget->setValue(_Node->getPSPointer()->getLODRatio(), false);
|
||||||
|
|
||||||
|
// Integration
|
||||||
|
_ui.integrationCheckBox->setChecked(_Node->getPSPointer()->isAccurateIntegrationEnabled());
|
||||||
|
_ui.loadBalancingCheckBox->setChecked(_Node->getPSPointer()->isLoadBalancingEnabled());
|
||||||
_ui.motionSlowDownCheckBox->setChecked(csd);
|
_ui.motionSlowDownCheckBox->setChecked(csd);
|
||||||
|
|
||||||
// Precomputed Bbox
|
// Precomputed Bbox
|
||||||
_ui.enablePBBCheckBox->setChecked(!_Node->getPSPointer()->getAutoComputeBBox());
|
_ui.enablePBBCheckBox->setChecked(!_Node->getPSPointer()->getAutoComputeBBox());
|
||||||
|
|
||||||
// global color
|
// global color
|
||||||
|
_ui.globalLightCheckBox->setChecked(_Node->getPSPointer()->getForceGlobalColorLightingFlag());
|
||||||
|
|
||||||
_GlobalColorWrapper.PS = _Node->getPSPointer();
|
_GlobalColorWrapper.PS = _Node->getPSPointer();
|
||||||
_ui.colorWidget->setWorkspaceNode(_Node);
|
_ui.colorWidget->setWorkspaceNode(_Node);
|
||||||
int bGlobalColor = _Node->getPSPointer()->getColorAttenuationScheme() != NULL ? 1 : 0;
|
int bGlobalColor = _Node->getPSPointer()->getColorAttenuationScheme() != NULL ? 1 : 0;
|
||||||
|
@ -284,6 +214,8 @@ void CParticleSystemPage::setEditedParticleSystem(CWorkspaceNode *node)
|
||||||
_ui.dieComboBox->setCurrentIndex(_Node->getPSPointer()->getDestroyCondition());
|
_ui.dieComboBox->setCurrentIndex(_Node->getPSPointer()->getDestroyCondition());
|
||||||
_ui.animTypeComboBox->setCurrentIndex(_Node->getPSPointer()->getAnimType());
|
_ui.animTypeComboBox->setCurrentIndex(_Node->getPSPointer()->getAnimType());
|
||||||
_ui.autoDelayCheckBox->setChecked(_Node->getPSPointer()->getAutoComputeDelayBeforeDeathConditionTest());
|
_ui.autoDelayCheckBox->setChecked(_Node->getPSPointer()->getAutoComputeDelayBeforeDeathConditionTest());
|
||||||
|
|
||||||
|
enabledModifiedFlag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CParticleSystemPage::updatePrecomputedBBoxParams()
|
void CParticleSystemPage::updatePrecomputedBBoxParams()
|
||||||
|
@ -418,17 +350,11 @@ void CParticleSystemPage::setEnableBbox(bool state)
|
||||||
updatePrecomputedBBoxParams();
|
updatePrecomputedBBoxParams();
|
||||||
else
|
else
|
||||||
Modules::psEdit().setAutoBBox(false);
|
Modules::psEdit().setAutoBBox(false);
|
||||||
_ui.bboxGroupBox->setEnabled(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CParticleSystemPage::setAutoBbox(bool state)
|
void CParticleSystemPage::setAutoBbox(bool state)
|
||||||
{
|
{
|
||||||
Modules::psEdit().setAutoBBox(state);
|
Modules::psEdit().setAutoBBox(state);
|
||||||
_ui.xDoubleSpinBox->setEnabled(!state);
|
|
||||||
_ui.yDoubleSpinBox->setEnabled(!state);
|
|
||||||
_ui.zDoubleSpinBox->setEnabled(!state);
|
|
||||||
_ui.incBboxPushButton->setEnabled(!state);
|
|
||||||
_ui.decBboxPushButton->setEnabled(!state);
|
|
||||||
updateModifiedFlag();
|
updateModifiedFlag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -556,7 +482,6 @@ void CParticleSystemPage::setSharable(bool state)
|
||||||
|
|
||||||
void CParticleSystemPage::setAutoLOD(bool state)
|
void CParticleSystemPage::setAutoLOD(bool state)
|
||||||
{
|
{
|
||||||
_ui.settingsPushButton->setEnabled(state);
|
|
||||||
// performance warning
|
// performance warning
|
||||||
if (state == _Node->getPSPointer()->isAutoLODEnabled()) return;
|
if (state == _Node->getPSPointer()->isAutoLODEnabled()) return;
|
||||||
_Node->getPSPointer()->enableAutoLOD(state);
|
_Node->getPSPointer()->enableAutoLOD(state);
|
||||||
|
@ -653,6 +578,65 @@ void CParticleSystemPage::setAfterDelay(double value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CParticleSystemPage::setTimeThreshold(float value)
|
||||||
|
{
|
||||||
|
NL3D::TAnimationTime t;
|
||||||
|
uint32 max;
|
||||||
|
bool csd;
|
||||||
|
bool klt;
|
||||||
|
_Node->getPSPointer()->getAccurateIntegrationParams(t, max, csd, klt);
|
||||||
|
_Node->getPSPointer()->setAccurateIntegrationParams(value, max, csd, klt);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setMaxSteps(uint32 value)
|
||||||
|
{
|
||||||
|
NL3D::TAnimationTime t;
|
||||||
|
uint32 max;
|
||||||
|
bool csd;
|
||||||
|
bool klt;
|
||||||
|
_Node->getPSPointer()->getAccurateIntegrationParams(t, max, csd, klt);
|
||||||
|
_Node->getPSPointer()->setAccurateIntegrationParams(t, value, csd, klt);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setUserParam1(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setUserParam(0, value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setUserParam2(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setUserParam(1, value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setUserParam3(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setUserParam(2, value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setUserParam4(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setUserParam(3, value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setMaxViewDist(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setMaxViewDist(value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParticleSystemPage::setLodRatio(float value)
|
||||||
|
{
|
||||||
|
_Node->getPSPointer()->setLODRatio(value);
|
||||||
|
updateModifiedFlag();
|
||||||
|
}
|
||||||
|
|
||||||
CParticleSystemPage::CGlobalColorWrapper::scheme_type *CParticleSystemPage::CGlobalColorWrapper::getScheme(void) const
|
CParticleSystemPage::CGlobalColorWrapper::scheme_type *CParticleSystemPage::CGlobalColorWrapper::getScheme(void) const
|
||||||
{
|
{
|
||||||
nlassert(PS);
|
nlassert(PS);
|
||||||
|
@ -661,6 +645,7 @@ CParticleSystemPage::CGlobalColorWrapper::scheme_type *CParticleSystemPage::CGlo
|
||||||
|
|
||||||
void CParticleSystemPage::CGlobalColorWrapper::setScheme(CParticleSystemPage::CGlobalColorWrapper::scheme_type *s)
|
void CParticleSystemPage::CGlobalColorWrapper::setScheme(CParticleSystemPage::CGlobalColorWrapper::scheme_type *s)
|
||||||
{
|
{
|
||||||
|
nlassert(PS);
|
||||||
PS->setColorAttenuationScheme(s);
|
PS->setColorAttenuationScheme(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,48 +34,6 @@
|
||||||
#include "edit_range_widget.h"
|
#include "edit_range_widget.h"
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT {
|
||||||
|
|
||||||
class CUserParamWrapper : public IPSWrapperFloat
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NL3D::CParticleSystem *PS;
|
|
||||||
uint32 Index;
|
|
||||||
float get(void) const;
|
|
||||||
void set(const float &v);
|
|
||||||
};
|
|
||||||
|
|
||||||
class CTimeThresholdWrapper : public IPSWrapperFloat
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NL3D::CParticleSystem *PS;
|
|
||||||
float get(void) const;
|
|
||||||
void set(const float &);
|
|
||||||
};
|
|
||||||
|
|
||||||
class CMaxNbIntegrationWrapper : public IPSWrapperUInt
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NL3D::CParticleSystem *PS;
|
|
||||||
uint32 get(void) const;
|
|
||||||
void set(const uint32 &);
|
|
||||||
};
|
|
||||||
|
|
||||||
class CMaxViewDistWrapper : public IPSWrapperFloat
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NL3D::CParticleSystem *PS;
|
|
||||||
float get(void) const;
|
|
||||||
void set(const float &);
|
|
||||||
};
|
|
||||||
|
|
||||||
class CLODRatioWrapper : public IPSWrapperFloat
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NL3D::CParticleSystem *PS;
|
|
||||||
float get(void) const;
|
|
||||||
void set(const float &);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@class CParticleSystemPage
|
@class CParticleSystemPage
|
||||||
@brief Page for QStackWidget, to edit workspace node in a particle system
|
@brief Page for QStackWidget, to edit workspace node in a particle system
|
||||||
|
@ -92,15 +50,27 @@ public:
|
||||||
void setEditedParticleSystem(CWorkspaceNode *node);
|
void setEditedParticleSystem(CWorkspaceNode *node);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void setGlobalLight(bool state);
|
// Integration tab
|
||||||
void setLoadBalancing(bool state);
|
void setLoadBalancing(bool state);
|
||||||
void setIntegration(bool state);
|
void setIntegration(bool state);
|
||||||
void setMotionSlowDown(bool state);
|
void setMotionSlowDown(bool state);
|
||||||
void setLock(bool checked);
|
void setLock(bool checked);
|
||||||
|
|
||||||
|
void setTimeThreshold(float value);
|
||||||
|
void setMaxSteps(uint32 value);
|
||||||
|
|
||||||
|
// User param tab
|
||||||
void setGloabal1();
|
void setGloabal1();
|
||||||
void setGloabal2();
|
void setGloabal2();
|
||||||
void setGloabal3();
|
void setGloabal3();
|
||||||
void setGloabal4();
|
void setGloabal4();
|
||||||
|
|
||||||
|
void setUserParam1(float value);
|
||||||
|
void setUserParam2(float value);
|
||||||
|
void setUserParam3(float value);
|
||||||
|
void setUserParam4(float value);
|
||||||
|
|
||||||
|
// BBox tab
|
||||||
void setEnableBbox(bool state);
|
void setEnableBbox(bool state);
|
||||||
void setAutoBbox(bool state);
|
void setAutoBbox(bool state);
|
||||||
void resetBbox();
|
void resetBbox();
|
||||||
|
@ -109,11 +79,21 @@ private Q_SLOTS:
|
||||||
void setXBbox(double value);
|
void setXBbox(double value);
|
||||||
void setYBbox(double value);
|
void setYBbox(double value);
|
||||||
void setZBbox(double value);
|
void setZBbox(double value);
|
||||||
void setEditGlobalColor(bool state);
|
|
||||||
void setPresetBehaviour(int index);
|
// LOD Param
|
||||||
void setSharable(bool state);
|
void setSharable(bool state);
|
||||||
void setAutoLOD(bool state);
|
void setAutoLOD(bool state);
|
||||||
void settings();
|
void settings();
|
||||||
|
|
||||||
|
void setMaxViewDist(float value);
|
||||||
|
void setLodRatio(float value);
|
||||||
|
|
||||||
|
// Global color tab
|
||||||
|
void setGlobalLight(bool state);
|
||||||
|
void setEditGlobalColor(bool state);
|
||||||
|
|
||||||
|
// Life mgt param
|
||||||
|
void setPresetBehaviour(int index);
|
||||||
void setModelRemoved(bool state);
|
void setModelRemoved(bool state);
|
||||||
void setPSResource(bool state);
|
void setPSResource(bool state);
|
||||||
void setLifeTimeUpdate(bool state);
|
void setLifeTimeUpdate(bool state);
|
||||||
|
@ -128,16 +108,11 @@ private:
|
||||||
void updateDieOnEventParams();
|
void updateDieOnEventParams();
|
||||||
void updateLifeMgtPresets();
|
void updateLifeMgtPresets();
|
||||||
|
|
||||||
void updateModifiedFlag() { if (_Node) _Node->setModified(true); }
|
bool enabledModifiedFlag;
|
||||||
|
|
||||||
|
void updateModifiedFlag() { if ((_Node) && (enabledModifiedFlag)) _Node->setModified(true); }
|
||||||
|
|
||||||
CWorkspaceNode *_Node;
|
CWorkspaceNode *_Node;
|
||||||
CTimeThresholdWrapper _TimeThresholdWrapper;
|
|
||||||
CMaxViewDistWrapper _MaxViewDistWrapper;
|
|
||||||
CMaxNbIntegrationWrapper _MaxNbIntegrationWrapper;
|
|
||||||
CLODRatioWrapper _LODRatioWrapper;
|
|
||||||
|
|
||||||
/// wrapper to tune user parameters
|
|
||||||
CUserParamWrapper _UserParamWrapper[NL3D::MaxPSUserParam];
|
|
||||||
|
|
||||||
struct CGlobalColorWrapper : public IPSSchemeWrapperRGBA
|
struct CGlobalColorWrapper : public IPSSchemeWrapperRGBA
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue