From 7512d653110eaa35b110986a21876586098a3c2a Mon Sep 17 00:00:00 2001 From: Chris Laurel Date: Tue, 21 Dec 2010 23:54:45 +0000 Subject: [PATCH] Updated SensorGeometry so that frustum base color may be set separately in in an SSC file. --- src/celengine/sensorgeometry.cpp | 4 +++- src/celengine/sensorgeometry.h | 11 +++++++++++ src/celengine/solarsys.cpp | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/celengine/sensorgeometry.cpp b/src/celengine/sensorgeometry.cpp index dd99f7c4b..cc9ac745a 100644 --- a/src/celengine/sensorgeometry.cpp +++ b/src/celengine/sensorgeometry.cpp @@ -31,6 +31,7 @@ SensorGeometry::SensorGeometry() : m_horizontalFov(degToRad(5.0)), m_verticalFov(degToRad(5.0)), m_frustumColor(1.0f, 1.0f, 1.0f), + m_frustumBaseColor(1.0f, 1.0f, 1.0f), m_frustumOpacity(0.25f), m_gridOpacity(1.0f), m_shape(EllipticalShape) @@ -171,7 +172,7 @@ SensorGeometry::render(RenderContext& rc, double tsec) glEnable(GL_LINE_SMOOTH); // Draw the footprint outline - glColor4f(m_frustumColor.red(), m_frustumColor.green(), m_frustumColor.blue(), m_gridOpacity); + glColor4f(m_frustumBaseColor.red(), m_frustumBaseColor.green(), m_frustumBaseColor.blue(), m_gridOpacity); glLineWidth(2.0f); glBegin(GL_LINE_LOOP); for (unsigned int i = 0; i < sectionCount; ++i) @@ -181,6 +182,7 @@ SensorGeometry::render(RenderContext& rc, double tsec) glEnd(); glLineWidth(1.0f); + glColor4f(m_frustumColor.red(), m_frustumColor.green(), m_frustumColor.blue(), m_frustumOpacity); for (unsigned int slice = 1; slice < sliceCount; ++slice) { // Linear arrangement of slices diff --git a/src/celengine/sensorgeometry.h b/src/celengine/sensorgeometry.h index 7a55c9360..63d508165 100644 --- a/src/celengine/sensorgeometry.h +++ b/src/celengine/sensorgeometry.h @@ -92,6 +92,16 @@ class SensorGeometry : public Geometry m_frustumColor = color; } + Color frustumBaseColor() const + { + return m_frustumBaseColor; + } + + void setFrustumBaseColor(const Color& color) + { + m_frustumBaseColor = color; + } + float frustumOpacity() const { return m_frustumOpacity; @@ -121,6 +131,7 @@ class SensorGeometry : public Geometry double m_horizontalFov; double m_verticalFov; Color m_frustumColor; + Color m_frustumBaseColor; float m_frustumOpacity; float m_gridOpacity; SensorShape m_shape; diff --git a/src/celengine/solarsys.cpp b/src/celengine/solarsys.cpp index 9d58c6cd3..77d81f688 100644 --- a/src/celengine/solarsys.cpp +++ b/src/celengine/solarsys.cpp @@ -933,12 +933,15 @@ static Body* CreateBody(const string& name, // Appearance attributes Color frustumColor(1.0f, 1.0f, 1.0f); + Color frustumBaseColor(1.0f, 1.0f, 1.0f); float frustumOpacity = 0.25f; float gridOpacity = 1.0f; sensorData->getColor("FrustumColor", frustumColor); + sensorData->getColor("FrustumBaseColor", frustumBaseColor); sensorData->getNumber("FrustumOpacity", frustumOpacity); sensorData->getNumber("GridOpacity", gridOpacity); sensor->setFrustumColor(frustumColor); + sensor->setFrustumBaseColor(frustumBaseColor); sensor->setFrustumOpacity(frustumOpacity); sensor->setGridOpacity(gridOpacity);