3 #include <simgear/scene/util/RenderConstants.hxx>
4 #include "GroundLightManager.hxx"
12 StateSet* makeLightSS()
14 StateSet* ss = new StateSet;
16 fog->setMode(Fog::EXP2);
17 ss->setAttribute(fog);
18 ss->setDataVariance(Object::DYNAMIC);
25 GroundLightManager::GroundLightManager()
28 runwayLightSS = makeLightSS();
29 taxiLightSS = makeLightSS();
30 groundLightSS = makeLightSS();
33 void GroundLightManager::update(const SGUpdateVisitor* updateVisitor)
36 SGVec4f fogColor = updateVisitor->getFogColor();
37 fog = static_cast<osg::Fog*>(runwayLightSS
38 ->getAttribute(StateAttribute::FOG));
39 fog->setColor(fogColor.osg());
40 fog->setDensity(updateVisitor->getRunwayFogExp2Density());
41 fog = static_cast<osg::Fog*>(taxiLightSS
42 ->getAttribute(StateAttribute::FOG));
43 fog->setColor(fogColor.osg());
44 fog->setDensity(updateVisitor->getTaxiFogExp2Density());
45 fog = static_cast<osg::Fog*>(groundLightSS
46 ->getAttribute(StateAttribute::FOG));
47 fog->setColor(fogColor.osg());
48 fog->setDensity(updateVisitor->getGroundLightsFogExp2Density());
51 unsigned GroundLightManager::getLightNodeMask(const SGUpdateVisitor* updateVisitor)
54 // The current sun angle in degree
55 float sun_angle = updateVisitor->getSunAngleDeg();
56 if (sun_angle > 85 || updateVisitor->getVisibility() < 5000)
57 mask |= RUNWAYLIGHTS_BIT;
60 mask |= GROUNDLIGHTS2_BIT;
62 mask |= GROUNDLIGHTS1_BIT;
64 mask |= GROUNDLIGHTS0_BIT;