void SporadicMeteorMgr::update(double deltaTime) { if (!m_flagShow) { return; } // step through and update all active meteors foreach (SporadicMeteor* m, activeMeteors) { if (!m->update(deltaTime)) { //important to delete when no longer active activeMeteors.removeOne(m); delete m; } } StelCore* core = StelApp::getInstance().getCore(); // going forward/backward OR current ZHR is zero ? // don't create new meteors if(!core->getRealTimeSpeed() || m_zhr < 1) { return; } // average meteors per frame float mpf = m_zhr * deltaTime / 3600.f; // maximum amount of meteors for the current frame int maxMpf = qRound(mpf); maxMpf = maxMpf < 1 ? 1 : maxMpf; float rate = mpf / (float) maxMpf; for (int i = 0; i < maxMpf; ++i) { float prob = (float) qrand() / (float) RAND_MAX; if (prob < rate) { SporadicMeteor* m = new SporadicMeteor(core, m_maxVelocity, m_bolideTexture); if (m->isAlive()) { activeMeteors.append(m); } else { delete m; } } } }
void StelGui::update() { StelCore* core = StelApp::getInstance().getCore(); if (core->getTimeRate()<-0.99*StelCore::JD_SECOND) { if (buttonTimeRewind->isChecked()==false) buttonTimeRewind->setChecked(true); } else { if (buttonTimeRewind->isChecked()==true) buttonTimeRewind->setChecked(false); } if (core->getTimeRate()>1.01*StelCore::JD_SECOND) { if (buttonTimeForward->isChecked()==false) { buttonTimeForward->setChecked(true); } } else { if (buttonTimeForward->isChecked()==true) buttonTimeForward->setChecked(false); } if (core->getTimeRate() == 0) { if (buttonTimeRealTimeSpeed->isChecked() != StelButton::ButtonStateNoChange) buttonTimeRealTimeSpeed->setChecked(StelButton::ButtonStateNoChange); } else if (core->getRealTimeSpeed()) { if (buttonTimeRealTimeSpeed->isChecked() != StelButton::ButtonStateOn) buttonTimeRealTimeSpeed->setChecked(StelButton::ButtonStateOn); } else if (buttonTimeRealTimeSpeed->isChecked() != StelButton::ButtonStateOff) { buttonTimeRealTimeSpeed->setChecked(StelButton::ButtonStateOff); } const bool isTimeNow=core->getIsTimeNow(); if (buttonTimeCurrent->isChecked()!=isTimeNow) { buttonTimeCurrent->setChecked(isTimeNow); } StelMovementMgr* mmgr = GETSTELMODULE(StelMovementMgr); const bool b = mmgr->getFlagTracking(); if (buttonGotoSelectedObject->isChecked()!=b) { buttonGotoSelectedObject->setChecked(b); } bool flag = GETSTELMODULE(StarMgr)->getFlagStars(); if (getGuiAction("actionShow_Stars")->isChecked() != flag) { getGuiAction("actionShow_Stars")->setChecked(flag); } flag = GETSTELMODULE(NebulaMgr)->getFlagHints(); if (getGuiAction("actionShow_Nebulas")->isChecked() != flag) getGuiAction("actionShow_Nebulas")->setChecked(flag); flag = GETSTELMODULE(StelSkyLayerMgr)->getFlagShow(); if (getGuiAction("actionShow_DSS")->isChecked() != flag) getGuiAction("actionShow_DSS")->setChecked(flag); flag = mmgr->getMountMode() != StelMovementMgr::MountAltAzimuthal; if (getGuiAction("actionSwitch_Equatorial_Mount")->isChecked() != flag) getGuiAction("actionSwitch_Equatorial_Mount")->setChecked(flag); SolarSystem* ssmgr = GETSTELMODULE(SolarSystem); flag = ssmgr->getFlagLabels(); if (getGuiAction("actionShow_Planets_Labels")->isChecked() != flag) getGuiAction("actionShow_Planets_Labels")->setChecked(flag); flag = ssmgr->getFlagOrbits(); if (getGuiAction("actionShow_Planets_Orbits")->isChecked() != flag) getGuiAction("actionShow_Planets_Orbits")->setChecked(flag); flag = ssmgr->getFlagTrails(); if (getGuiAction("actionShow_Planets_Trails")->isChecked() != flag) getGuiAction("actionShow_Planets_Trails")->setChecked(flag); flag = StelApp::getInstance().getVisionModeNight(); if (getGuiAction("actionShow_Night_Mode")->isChecked() != flag) getGuiAction("actionShow_Night_Mode")->setChecked(flag); flag = StelMainWindow::getInstance().isFullScreen(); if (getGuiAction("actionSet_Full_Screen_Global")->isChecked() != flag) getGuiAction("actionSet_Full_Screen_Global")->setChecked(flag); skyGui->infoPanel->setTextFromObjects(GETSTELMODULE(StelObjectMgr)->getSelectedObject()); // Check if the progressbar window changed, if yes update the whole view if (savedProgressBarSize!=skyGui->progressBarMgr->boundingRect().size()) { savedProgressBarSize=skyGui->progressBarMgr->boundingRect().size(); skyGui->updateBarsPos(); } dateTimeDialog->setDateTime(core->getJDay()); }