void CParticleEditor::play(CWorkspaceNode &node) { if (isRunning(&node)) return; // NB : node must be stopped, no check is done nlassert(node.isLoaded()); // if node not started, start it node.memorizeState(); // enable the system to take the right date from the scene node.getPSModel()->enableAutoGetEllapsedTime(true); node.getPSPointer()->setSystemDate(0.f); node.getPSPointer()->reactivateSound(); node.getPSModel()->activateEmitters(true); if (node.getPSPointer()->getAutoCountFlag()) { if (node.getResetAutoCountFlag()) { // reset particle size arrays node.getPSPointer()->matchArraySize(); } resetAutoCount(&node, false); } // Set speed playback particle system node.getPSModel()->setEllapsedTimeRatio(_Speed); }
//****************************************************************************************************** void CStartStopParticleSystem::play(CParticleWorkspace::CNode &node) { if (isRunning(&node)) return; // NB : node must be stopped, no check is done nlassert(node.isLoaded()); // if node not started, start it node.memorizeState(); // enable the system to take the right date from the scene node.getPSModel()->enableAutoGetEllapsedTime(true); node.getPSPointer()->setSystemDate(0.f); node.getPSPointer()->reactivateSound(); node.getPSModel()->activateEmitters(true); if (node.getPSPointer()->getAutoCountFlag()) { if (node.getResetAutoCountFlag()) { // reset particle size arrays node.getPSPointer()->matchArraySize(); } resetAutoCount(&node, false); } CSliderCtrl *sl = (CSliderCtrl *) GetDlgItem(IDC_ANIM_SPEED); node.getPSModel()->setEllapsedTimeRatio(m_SpeedSliderPos * 0.01f); _ParticleDlg->ParticleTreeCtrl->suppressLocatedInstanceNbItem(node, 0); }
//****************************************************************************************************** void CStartStopParticleSystem::OnEnableAutoCount() { nlassert(_ActiveNode); stop(); bool autoCount = ((CButton *) GetDlgItem(IDC_ENABLE_AUTO_COUNT))->GetCheck() != 0; if (autoCount) { CString caption; CString mess; caption.LoadString(IDS_PARTICLE_SYSTEM_EDITOR); mess.LoadString(IDS_ENABLE_AUTOCOUNT); if (MessageBox((LPCTSTR) mess, (LPCTSTR) caption, MB_OKCANCEL) != IDOK) { ((CButton *) GetDlgItem(IDC_ENABLE_AUTO_COUNT))->SetCheck(0); return; } resetAutoCount(_ActiveNode); } enableAutoCount(autoCount); }
//****************************************************************************************************** void CStartStopParticleSystem::OnResetCount() { stop(); resetAutoCount(_ActiveNode); }