//////////////////////////////////////////////////////////////////////////////// // Increment time void StelCore::updateTime(double deltaTime) { JDay+=timeSpeed*deltaTime; // Fix time limits to -100000 to +100000 to prevent bugs if (JDay>38245309.499988) JDay = 38245309.499988; if (JDay<-34803211.500012) JDay = -34803211.500012; if (position->isObserverLifeOver()) { // Unselect if the new home planet is the previously selected object StelObjectMgr* objmgr = GETSTELMODULE(StelObjectMgr); Q_ASSERT(objmgr); if (objmgr->getWasSelected() && objmgr->getSelectedObject()[0].data()==position->getHomePlanet()) { objmgr->unSelect(); } StelObserver* newObs = position->getNextObserver(); delete position; position = newObs; } position->update(deltaTime); // Position of sun and all the satellites (ie planets) SolarSystem* solsystem = (SolarSystem*)StelApp::getInstance().getModuleMgr().getModule("SolarSystem"); solsystem->computePositions(getJDay(), position->getHomePlanet()->getHeliocentricEclipticPos()); }
void ConstellationMgr::init() { QSettings* conf = StelApp::getInstance().getSettings(); Q_ASSERT(conf); lastLoadedSkyCulture = "dummy"; asterFont.setPixelSize(conf->value("viewing/constellation_font_size", 16).toInt()); setFlagLines(conf->value("viewing/flag_constellation_drawing").toBool()); setFlagLabels(conf->value("viewing/flag_constellation_name").toBool()); setFlagBoundaries(conf->value("viewing/flag_constellation_boundaries",false).toBool()); setArtIntensity(conf->value("viewing/constellation_art_intensity", 0.5f).toFloat()); setArtFadeDuration(conf->value("viewing/constellation_art_fade_duration",2.f).toFloat()); setFlagArt(conf->value("viewing/flag_constellation_art").toBool()); setFlagIsolateSelected(conf->value("viewing/flag_constellation_isolate_selected", conf->value("viewing/flag_constellation_pick", false).toBool() ).toBool()); StelObjectMgr *objectManager = GETSTELMODULE(StelObjectMgr); objectManager->registerStelObjectMgr(this); connect(objectManager, SIGNAL(selectedObjectChanged(StelModule::StelModuleSelectAction)), this, SLOT(selectedObjectChange(StelModule::StelModuleSelectAction))); StelApp *app = &StelApp::getInstance(); connect(app, SIGNAL(languageChanged()), this, SLOT(updateI18n())); connect(app, SIGNAL(skyCultureChanged(const QString&)), this, SLOT(updateSkyCulture(const QString&))); connect(app, SIGNAL(colorSchemeChanged(const QString&)), this, SLOT(setStelStyle(const QString&))); }
void NavStars::draw(StelCore* core) { // Drawing is enabled? if (markerFader.getInterstate() <= 0.0) { return; } if (stars.isEmpty()) { StelObjectMgr* omgr = GETSTELMODULE(StelObjectMgr); stars.fill(StelObjectP(), starNumbers.size()); for (int i = 0; i < starNumbers.size(); ++i) { QString name = QString("HIP %1").arg(starNumbers.at(i)); stars[i] = omgr->searchByName(name); } } StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); StelPainter painter(prj); Vec3d pos; for (int i = 0; i < starNumbers.size(); ++i) { if (stars[i].isNull()) continue; // Get the current position of the navigational star... if (prj->projectCheck(stars[i]->getJ2000EquatorialPos(core), pos)) { // ... and draw a marker around it if (!markerTexture.isNull()) { glEnable(GL_BLEND); painter.enableTexture2d(true); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); painter.setColor(markerColor[0], markerColor[1], markerColor[2], markerFader.getInterstate()); markerTexture->bind(); painter.drawSprite2dMode(pos[0], pos[1], 11.f); } // Draw the localized name of the star and its ordinal number QString label = stars[i]->getNameI18n(); if (label.isEmpty()) label = QString("%1").arg(i+1); else label = QString("%1 (%2)").arg(label).arg(i+1); painter.drawText(pos[0], pos[1], label, 0, 10.f, 10.f, false); } } }
void SolarSystemEditor::resetSolarSystemToDefault() { if (isInitialized) { if (resetSolarSystemConfigurationFile()) { //Deselect all currently selected objects StelObjectMgr * objectManager = GETSTELMODULE(StelObjectMgr); //TODO objectManager->unSelect(); solarSystemManager->reloadPlanets(); emit solarSystemChanged(); } } }
void ConstellationMgr::selectedObjectChange(StelModule::StelModuleSelectAction action) { StelObjectMgr* omgr = GETSTELMODULE(StelObjectMgr); Q_ASSERT(omgr); const QList<StelObjectP> newSelected = omgr->getSelectedObject(); if (newSelected.empty()) { // Even if do not have anything selected, KEEP constellation selection intact // (allows viewing constellations without distraction from star pointer animation) // setSelected(NULL); return; } const QList<StelObjectP> newSelectedConst = omgr->getSelectedObject("Constellation"); if (!newSelectedConst.empty()) { // If removing this selection if(action == StelModule::RemoveFromSelection) { unsetSelectedConst((Constellation *)newSelectedConst[0].data()); } else { // Add constellation to selected list (do not select a star, just the constellation) setSelectedConst((Constellation *)newSelectedConst[0].data()); } } else { const QList<StelObjectP> newSelectedStar = omgr->getSelectedObject("Star"); if (!newSelectedStar.empty()) { // if (!added) // setSelected(NULL); setSelected(newSelectedStar[0].data()); } else { // if (!added) setSelected(NULL); } } }
void ConstellationMgr::deselectConstellations(void) { selected.clear(); StelObjectMgr* omgr = GETSTELMODULE(StelObjectMgr); Q_ASSERT(omgr); const QList<StelObjectP> currSelection = omgr->getSelectedObject(); if (currSelection.empty()) { return; } QList<StelObjectP> newSelection; foreach(const StelObjectP& obj, currSelection) { if (obj->getType() != "Constellation") { newSelection.push_back(obj); } } omgr->setSelectedObject(newSelection, StelModule::ReplaceSelection); }
void Pulsars::reloadCatalog(void) { bool hasSelection = false; StelObjectMgr* objMgr = GETSTELMODULE(StelObjectMgr); // Whether any pulsar are selected? Save the current selection... const QList<StelObjectP> selectedObject = objMgr->getSelectedObject("Pulsar"); if (!selectedObject.isEmpty()) { // ... unselect current pulsar. hasSelection = true; objMgr->unSelect(); } readJsonFile(); if (hasSelection) { // Restore selection... objMgr->setSelectedObject(selectedObject); } }
void StelCore::moveObserverToSelected() { StelObjectMgr* objmgr = GETSTELMODULE(StelObjectMgr); Q_ASSERT(objmgr); if (objmgr->getWasSelected()) { Planet* pl = dynamic_cast<Planet*>(objmgr->getSelectedObject()[0].data()); if (pl) { // We need to move to the selected planet. Try to generate a location from the current one StelLocation loc = getCurrentLocation(); if (loc.planetName != pl->getEnglishName()) { loc.planetName = pl->getEnglishName(); loc.name = "-"; loc.state = ""; moveObserverTo(loc); LandscapeMgr* landscapeMgr = GETSTELMODULE(LandscapeMgr); if (pl->getEnglishName() == "Solar System Observer") { landscapeMgr->setFlagAtmosphere(false); landscapeMgr->setFlagFog(false); landscapeMgr->setFlagLandscape(false); } else { landscapeMgr->setFlagAtmosphere(pl->hasAtmosphere()); landscapeMgr->setFlagFog(pl->hasAtmosphere()); landscapeMgr->setFlagLandscape(true); } } } } StelMovementMgr* mmgr = GETSTELMODULE(StelMovementMgr); Q_ASSERT(mmgr); mmgr->setFlagTracking(false); }
void ConstellationMgr::init() { QSettings* conf = StelApp::getInstance().getSettings(); Q_ASSERT(conf); lastLoadedSkyCulture = "dummy"; asterFont.setPixelSize(conf->value("viewing/constellation_font_size", 14).toInt()); setFlagLines(conf->value("viewing/flag_constellation_drawing").toBool()); setFlagLabels(conf->value("viewing/flag_constellation_name").toBool()); setFlagBoundaries(conf->value("viewing/flag_constellation_boundaries",false).toBool()); setArtIntensity(conf->value("viewing/constellation_art_intensity", 0.5f).toFloat()); setArtFadeDuration(conf->value("viewing/constellation_art_fade_duration",2.f).toFloat()); setFlagArt(conf->value("viewing/flag_constellation_art").toBool()); setFlagIsolateSelected(conf->value("viewing/flag_constellation_isolate_selected", false).toBool()); setFlagConstellationPick(conf->value("viewing/flag_constellation_pick", false).toBool()); setConstellationLineThickness(conf->value("viewing/constellation_line_thickness", 1.f).toFloat()); QString starloreDisplayStyle=conf->value("viewing/constellation_name_style", "translated").toString(); if (starloreDisplayStyle=="translated") { setConstellationDisplayStyle(constellationsTranslated); } else if (starloreDisplayStyle=="native") { setConstellationDisplayStyle(constellationsNative); } else if (starloreDisplayStyle=="abbreviated") { setConstellationDisplayStyle(constellationsAbbreviated); } else if (starloreDisplayStyle=="english") { setConstellationDisplayStyle(constellationsEnglish); } else { qDebug() << "Warning: viewing/constellation_name_style (" << starloreDisplayStyle << ") invalid. Using translated style."; conf->setValue("viewing/constellation_name_style", "translated"); setConstellationDisplayStyle(constellationsTranslated); } // Load colors from config file QString defaultColor = conf->value("color/default_color").toString(); setLinesColor(StelUtils::strToVec3f(conf->value("color/const_lines_color", defaultColor).toString())); setBoundariesColor(StelUtils::strToVec3f(conf->value("color/const_boundary_color", "0.8,0.3,0.3").toString())); setLabelsColor(StelUtils::strToVec3f(conf->value("color/const_names_color", defaultColor).toString())); StelObjectMgr *objectManager = GETSTELMODULE(StelObjectMgr); objectManager->registerStelObjectMgr(this); connect(objectManager, SIGNAL(selectedObjectChanged(StelModule::StelModuleSelectAction)), this, SLOT(selectedObjectChange(StelModule::StelModuleSelectAction))); StelApp *app = &StelApp::getInstance(); connect(app, SIGNAL(languageChanged()), this, SLOT(updateI18n())); connect(&app->getSkyCultureMgr(), SIGNAL(currentSkyCultureChanged(QString)), this, SLOT(updateSkyCulture(const QString&))); QString displayGroup = N_("Display Options"); addAction("actionShow_Constellation_Lines", displayGroup, N_("Constellation lines"), "linesDisplayed", "C"); addAction("actionShow_Constellation_Art", displayGroup, N_("Constellation art"), "artDisplayed", "R"); addAction("actionShow_Constellation_Labels", displayGroup, N_("Constellation labels"), "namesDisplayed", "V"); addAction("actionShow_Constellation_Boundaries", displayGroup, N_("Constellation boundaries"), "boundariesDisplayed", "B"); addAction("actionShow_Constellation_Isolated", displayGroup, N_("Select single constellation"), "isolateSelected"); // no shortcut, sync with GUI }