Straightened out mess of rendering flags.
This commit is contained in:
parent
7e1ee732bf
commit
ccd60eeda4
|
@ -59,12 +59,12 @@ Renderer::Renderer() :
|
|||
fov(FOV),
|
||||
renderMode(GL_FILL),
|
||||
asterisms(NULL),
|
||||
renderFlags(ShowStars | ShowPlanets),
|
||||
labelMode(NoLabels),
|
||||
ambientLightLevel(0.1f),
|
||||
brightnessScale(1.0f / 6.0f),
|
||||
brightnessBias(0.0f),
|
||||
perPixelLightingEnabled(false),
|
||||
cloudMappingEnabled(false),
|
||||
console(NULL),
|
||||
nSimultaneousTextures(1),
|
||||
useRegisterCombiners(false),
|
||||
|
@ -383,12 +383,21 @@ Console* Renderer::getConsole() const
|
|||
}
|
||||
|
||||
|
||||
int Renderer::getRenderFlags() const
|
||||
{
|
||||
return renderFlags;
|
||||
}
|
||||
|
||||
void Renderer::setRenderFlags(int _renderFlags)
|
||||
{
|
||||
renderFlags = _renderFlags;
|
||||
}
|
||||
|
||||
int Renderer::getLabelMode() const
|
||||
{
|
||||
return labelMode;
|
||||
}
|
||||
|
||||
|
||||
void Renderer::setLabelMode(int _labelMode)
|
||||
{
|
||||
labelMode = _labelMode;
|
||||
|
@ -441,17 +450,6 @@ bool Renderer::perPixelLightingSupported() const
|
|||
}
|
||||
|
||||
|
||||
bool Renderer::getCloudMapping() const
|
||||
{
|
||||
return cloudMappingEnabled;
|
||||
}
|
||||
|
||||
void Renderer::setCloudMapping(bool enable)
|
||||
{
|
||||
cloudMappingEnabled = enable;
|
||||
}
|
||||
|
||||
|
||||
void Renderer::addLabel(string text, Color color, Point3f pos)
|
||||
{
|
||||
double winX, winY, winZ;
|
||||
|
@ -529,11 +527,12 @@ void Renderer::render(const Observer& observer,
|
|||
glDisable(GL_LIGHTING);
|
||||
glDepthMask(GL_FALSE);
|
||||
glEnable(GL_BLEND);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
clearLabels();
|
||||
renderList.clear();
|
||||
|
||||
if (galaxies != NULL)
|
||||
if ((renderFlags & ShowGalaxies) != 0 && galaxies != NULL)
|
||||
renderGalaxies(*galaxies, observer);
|
||||
|
||||
// Translate the camera before rendering the stars
|
||||
|
@ -541,10 +540,11 @@ void Renderer::render(const Observer& observer,
|
|||
glTranslatef(-observerPos.x, -observerPos.y, -observerPos.z);
|
||||
// Render stars
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
renderStars(starDB, visset, observer);
|
||||
if ((renderFlags & ShowStars) != 0)
|
||||
renderStars(starDB, visset, observer);
|
||||
|
||||
// Render asterisms
|
||||
if (asterisms != NULL)
|
||||
if ((renderFlags & ShowDiagrams) != 0 && asterisms != NULL)
|
||||
{
|
||||
glColor4f(0.5f, 0.0, 1.0f, 0.5f);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
@ -1162,7 +1162,7 @@ void Renderer::renderPlanet(const Body& body,
|
|||
}
|
||||
|
||||
if ((surface.appearanceFlags & Surface::ApplyCloudMap) != 0 &&
|
||||
cloudMappingEnabled)
|
||||
(renderFlags & ShowCloudMaps) != 0)
|
||||
{
|
||||
if (!textureManager->find(surface.cloudTexture, &cloudTex))
|
||||
cloudTex = textureManager->load(surface.cloudTexture, false);
|
||||
|
@ -1839,7 +1839,6 @@ void Renderer::renderStars(const StarDatabase& starDB,
|
|||
}
|
||||
}
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glBindTexture(GL_TEXTURE_2D, starTex->getName());
|
||||
renderParticles(starParticles, observer.getOrientation());
|
||||
glBindTexture(GL_TEXTURE_2D, glareTex->getName());
|
||||
|
|
14
src/render.h
14
src/render.h
|
@ -58,6 +58,16 @@ class Renderer
|
|||
PlanetLabels = 2,
|
||||
PlanetOrbits = 4,
|
||||
};
|
||||
enum {
|
||||
ShowNothing = 0,
|
||||
ShowStars = 1,
|
||||
ShowPlanets = 2,
|
||||
ShowGalaxies = 4,
|
||||
ShowDiagrams = 8,
|
||||
ShowCloudMaps = 16,
|
||||
};
|
||||
int getRenderFlags() const;
|
||||
void setRenderFlags(int);
|
||||
int getLabelMode() const;
|
||||
void setLabelMode(int);
|
||||
void addLabelledStar(Star*);
|
||||
|
@ -66,8 +76,6 @@ class Renderer
|
|||
void setAmbientLightLevel(float);
|
||||
bool getPerPixelLighting() const;
|
||||
void setPerPixelLighting(bool);
|
||||
bool getCloudMapping() const;
|
||||
void setCloudMapping(bool);
|
||||
bool perPixelLightingSupported() const;
|
||||
|
||||
float getBrightnessScale() const;
|
||||
|
@ -165,9 +173,9 @@ class Renderer
|
|||
|
||||
int renderMode;
|
||||
int labelMode;
|
||||
int renderFlags;
|
||||
float ambientLightLevel;
|
||||
bool perPixelLightingEnabled;
|
||||
bool cloudMappingEnabled;
|
||||
float brightnessBias;
|
||||
float brightnessScale;
|
||||
|
||||
|
|
|
@ -119,6 +119,7 @@ static void displayGalaxyInfo(Console& console,
|
|||
console << "Distance: ";
|
||||
displayDistance(console, distance);
|
||||
console << '\n';
|
||||
console << "Type: " << galaxy.getType() << '\n';
|
||||
console << "Radius: " << galaxy.getRadius() << " ly\n";
|
||||
}
|
||||
|
||||
|
@ -558,7 +559,13 @@ void Simulation::computeGotoParameters(Selection& destination, JourneyParams& jp
|
|||
UniversalCoord targetPosition = getSelectionPosition(selection, simTime);
|
||||
Vec3d v = targetPosition - observer.getPosition();
|
||||
double distanceToTarget = v.length();
|
||||
double maxOrbitDistance = (selection.body != NULL) ? astro::kilometersToLightYears(5.0f * selection.body->getRadius()) : 0.5f;
|
||||
double maxOrbitDistance;
|
||||
if (selection.body != NULL)
|
||||
maxOrbitDistance = astro::kilometersToLightYears(5.0f * selection.body->getRadius());
|
||||
else if (selection.galaxy != NULL)
|
||||
maxOrbitDistance = 5.0f * selection.galaxy->getRadius();
|
||||
else
|
||||
maxOrbitDistance = 0.5f;
|
||||
double orbitDistance = (distanceToTarget > maxOrbitDistance * 10.0f) ? maxOrbitDistance : distanceToTarget * 0.1f;
|
||||
|
||||
v.normalize();
|
||||
|
|
|
@ -88,7 +88,6 @@ static StarNameDatabase* starNameDB = NULL;
|
|||
static SolarSystemCatalog* solarSystemCatalog = NULL;
|
||||
static GalaxyList* galaxies = NULL;
|
||||
static AsterismList* asterisms = NULL;
|
||||
static bool showAsterisms = false;
|
||||
|
||||
static FavoritesList* favorites = NULL;
|
||||
|
||||
|
@ -529,6 +528,19 @@ static void ToggleLabelState(int menuItem, int labelState)
|
|||
}
|
||||
}
|
||||
|
||||
static void ToggleRenderFlag(int menuItem, int renderFlag)
|
||||
{
|
||||
if ((GetMenuState(menuBar, menuItem, MF_BYCOMMAND) & MF_CHECKED) == 0)
|
||||
{
|
||||
renderer->setRenderFlags(renderer->getRenderFlags() | renderFlag);
|
||||
CheckMenuItem(menuBar, menuItem, MF_CHECKED);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderer->setRenderFlags(renderer->getRenderFlags() & ~renderFlag);
|
||||
CheckMenuItem(menuBar, menuItem, MF_UNCHECKED);
|
||||
}
|
||||
}
|
||||
|
||||
static bool ToggleMenuItem(int menuItem)
|
||||
{
|
||||
|
@ -782,19 +794,15 @@ void handleKeyPress(int c)
|
|||
break;
|
||||
|
||||
case 'I':
|
||||
{
|
||||
bool enabled = !renderer->getCloudMapping();
|
||||
CheckMenuItem(menuBar, ID_RENDER_SHOWATMOSPHERES,
|
||||
enabled ? MF_CHECKED : MF_UNCHECKED);
|
||||
renderer->setCloudMapping(enabled);
|
||||
}
|
||||
ToggleRenderFlag(ID_RENDER_SHOWATMOSPHERES, Renderer::ShowCloudMaps);
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
ToggleRenderFlag(ID_RENDER_SHOWGALAXIES, Renderer::ShowGalaxies);
|
||||
break;
|
||||
|
||||
case '/':
|
||||
showAsterisms = !showAsterisms;
|
||||
CheckMenuItem(menuBar, ID_RENDER_SHOWCONSTELLATIONS,
|
||||
showAsterisms ? MF_CHECKED : MF_UNCHECKED);
|
||||
renderer->showAsterisms(showAsterisms ? asterisms : NULL);
|
||||
ToggleRenderFlag(ID_RENDER_SHOWCONSTELLATIONS, Renderer::ShowDiagrams);
|
||||
break;
|
||||
|
||||
case '~':
|
||||
|
@ -1268,6 +1276,8 @@ int APIENTRY WinMain(HINSTANCE hInstance,
|
|||
renderer->setBrightnessBias(0.0f);
|
||||
renderer->setBrightnessScale(1.0f / (config->faintestVisible + 1.0f));
|
||||
|
||||
renderer->showAsterisms(asterisms);
|
||||
|
||||
// Set up the overlay
|
||||
overlay = new Overlay();
|
||||
overlay->setWindowSize(g_w, g_h);
|
||||
|
@ -1624,18 +1634,13 @@ LRESULT CALLBACK MainWindowProc(HWND hWnd,
|
|||
ToggleLabelState(ID_RENDER_SHOWORBITS, Renderer::PlanetOrbits);
|
||||
break;
|
||||
case ID_RENDER_SHOWCONSTELLATIONS:
|
||||
showAsterisms = !showAsterisms;
|
||||
CheckMenuItem(menuBar, ID_RENDER_SHOWCONSTELLATIONS,
|
||||
showAsterisms ? MF_CHECKED : MF_UNCHECKED);
|
||||
renderer->showAsterisms(showAsterisms ? asterisms : NULL);
|
||||
ToggleRenderFlag(ID_RENDER_SHOWCONSTELLATIONS, Renderer::ShowDiagrams);
|
||||
break;
|
||||
case ID_RENDER_SHOWATMOSPHERES:
|
||||
{
|
||||
bool enabled = !renderer->getCloudMapping();
|
||||
CheckMenuItem(menuBar, ID_RENDER_SHOWATMOSPHERES,
|
||||
enabled ? MF_CHECKED : MF_UNCHECKED);
|
||||
renderer->setCloudMapping(enabled);
|
||||
}
|
||||
ToggleRenderFlag(ID_RENDER_SHOWATMOSPHERES, Renderer::ShowCloudMaps);
|
||||
break;
|
||||
case ID_RENDER_SHOWGALAXIES:
|
||||
ToggleRenderFlag(ID_RENDER_SHOWGALAXIES, Renderer::ShowGalaxies);
|
||||
break;
|
||||
|
||||
case ID_RENDER_AMBIENTLIGHT_NONE:
|
||||
|
|
Loading…
Reference in a new issue