From 5fb7e621f210f4cdc2b6ca14bec12487481263f6 Mon Sep 17 00:00:00 2001 From: Chris Laurel Date: Thu, 9 Aug 2001 01:33:08 +0000 Subject: [PATCH] Added track mode, light speed key --- src/celestiacore.cpp | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/celestiacore.cpp b/src/celestiacore.cpp index c209d500b..109869f9c 100644 --- a/src/celestiacore.cpp +++ b/src/celestiacore.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -313,12 +314,15 @@ void CelestiaCore::keyDown(int key) sim->setTargetSpeed(astro::kilometersToLightYears(1000.0)); break; case Key_F4: - sim->setTargetSpeed(astro::kilometersToLightYears(1000000.0)); + sim->setTargetSpeed(astro::kilometersToLightYears(astro::speedOfLight)); break; case Key_F5: - sim->setTargetSpeed(astro::AUtoLightYears(1)); + sim->setTargetSpeed(astro::kilometersToLightYears(1000000.0)); break; case Key_F6: + sim->setTargetSpeed(astro::AUtoLightYears(1)); + break; + case Key_F7: sim->setTargetSpeed(1); break; } @@ -399,6 +403,10 @@ void CelestiaCore::charEntered(char c) sim->geosynchronousFollow(); break; + case 'T': + sim->track(); + break; + case 'H': sim->selectStar(0); break; @@ -695,7 +703,9 @@ void CelestiaCore::showText(string s) static void displayDistance(Overlay& overlay, double distance) { - if (distance >= astro::AUtoLightYears(1000.0f)) + if (distance < astro::kilometersToLightYears(1.0f)) + overlay.printf("%.3f m", distance); + else if (distance >= astro::AUtoLightYears(1000.0f)) overlay.printf("%.3f ly", distance); else if (distance >= astro::kilometersToLightYears(10000000.0)) overlay.printf("%.3f au", astro::lightYearsToAU(distance)); @@ -821,34 +831,24 @@ void CelestiaCore::renderOverlay() { glPushMatrix(); glTranslatef(0, fontHeight * 2 + 5, 0); - overlay->beginText(); - - double speed = sim->getObserver().getVelocity().length(); - char* units; - if (speed < astro::AUtoLightYears(1000)) - { - if (speed < astro::kilometersToLightYears(10000000.0f)) - { - speed = astro::lightYearsToKilometers(speed); - units = "km/s"; - } - else - { - speed = astro::lightYearsToAU(speed); - units = "AU/s"; - } - } - else - { - units = "ly/s"; - } - glColor4f(0.7f, 0.7f, 1.0f, 1.0f); + overlay->beginText(); *overlay << '\n'; if (showFPSCounter) *overlay << "FPS: " << fps; - *overlay << "\nSpeed: " << speed << ' ' << units; + *overlay << "\nSpeed: " << setprecision(3) << fixed; + + double speed = sim->getObserver().getVelocity().length(); + if (speed < astro::kilometersToLightYears(1.0f)) + *overlay << astro::lightYearsToKilometers(speed) * 1000.0f << " m/s"; + else if (speed < astro::kilometersToLightYears(10000.0f)) + *overlay << astro::lightYearsToKilometers(speed) << " km/s"; + else if (speed < astro::kilometersToLightYears((float) astro::speedOfLight * 1000000.0f)) + *overlay << astro::lightYearsToKilometers(speed) / astro::speedOfLight << 'c'; + else + *overlay << speed << " ly/s"; + *overlay << setprecision(6) << scientific; overlay->endText(); glPopMatrix();