Added track mode, light speed key
This commit is contained in:
parent
ae428fc6f9
commit
5fb7e621f2
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
|
@ -313,12 +314,15 @@ void CelestiaCore::keyDown(int key)
|
||||||
sim->setTargetSpeed(astro::kilometersToLightYears(1000.0));
|
sim->setTargetSpeed(astro::kilometersToLightYears(1000.0));
|
||||||
break;
|
break;
|
||||||
case Key_F4:
|
case Key_F4:
|
||||||
sim->setTargetSpeed(astro::kilometersToLightYears(1000000.0));
|
sim->setTargetSpeed(astro::kilometersToLightYears(astro::speedOfLight));
|
||||||
break;
|
break;
|
||||||
case Key_F5:
|
case Key_F5:
|
||||||
sim->setTargetSpeed(astro::AUtoLightYears(1));
|
sim->setTargetSpeed(astro::kilometersToLightYears(1000000.0));
|
||||||
break;
|
break;
|
||||||
case Key_F6:
|
case Key_F6:
|
||||||
|
sim->setTargetSpeed(astro::AUtoLightYears(1));
|
||||||
|
break;
|
||||||
|
case Key_F7:
|
||||||
sim->setTargetSpeed(1);
|
sim->setTargetSpeed(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -399,6 +403,10 @@ void CelestiaCore::charEntered(char c)
|
||||||
sim->geosynchronousFollow();
|
sim->geosynchronousFollow();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'T':
|
||||||
|
sim->track();
|
||||||
|
break;
|
||||||
|
|
||||||
case 'H':
|
case 'H':
|
||||||
sim->selectStar(0);
|
sim->selectStar(0);
|
||||||
break;
|
break;
|
||||||
|
@ -695,7 +703,9 @@ void CelestiaCore::showText(string s)
|
||||||
|
|
||||||
static void displayDistance(Overlay& overlay, double distance)
|
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);
|
overlay.printf("%.3f ly", distance);
|
||||||
else if (distance >= astro::kilometersToLightYears(10000000.0))
|
else if (distance >= astro::kilometersToLightYears(10000000.0))
|
||||||
overlay.printf("%.3f au", astro::lightYearsToAU(distance));
|
overlay.printf("%.3f au", astro::lightYearsToAU(distance));
|
||||||
|
@ -821,34 +831,24 @@ void CelestiaCore::renderOverlay()
|
||||||
{
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(0, fontHeight * 2 + 5, 0);
|
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);
|
glColor4f(0.7f, 0.7f, 1.0f, 1.0f);
|
||||||
|
|
||||||
|
overlay->beginText();
|
||||||
*overlay << '\n';
|
*overlay << '\n';
|
||||||
if (showFPSCounter)
|
if (showFPSCounter)
|
||||||
*overlay << "FPS: " << fps;
|
*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();
|
overlay->endText();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
Loading…
Reference in a new issue