/* RGBEffects class */ RGBEffects::RGBEffects(int redPin, int greenPin, int bluePin){ _redPin = redPin; _greenPin = greenPin; _bluePin = bluePin; // initialize LED pins pinMode(_redPin, OUTPUT); pinMode(_greenPin, OUTPUT); pinMode(_bluePin, OUTPUT); SolidEffect *solid = new SolidEffect(); solid->setup(); _effects[0] = solid; _solidEffect = solid; RainbowEffect *rainbow = new RainbowEffect(); rainbow->setup(); _effects[1] = rainbow; FadeEffect *fade = new FadeEffect(); fade->setup(); _effects[2] = fade; CubeEffect *cube = new CubeEffect(); cube->setup(); _effects[3] = cube; BlinkEffect *blink = new BlinkEffect(); blink->setup(); _effects[4] = blink; _currentEffectIndex = 1; }
void FeatureModelGraph::redraw() { // clear it out removeChildren( 0, getNumChildren() ); // zero out any decorators _clampable = 0L; _drapeable = 0L; _overlayPlaceholder = new osg::Group(); _overlayInstalled = _overlayPlaceholder; osg::Node* node = 0; // if there's a display schema in place, set up for quadtree paging. if ( _options.layout().isSet() || _useTiledSource ) { node = setupPaging(); } else { FeatureLevel defaultLevel( 0.0f, FLT_MAX ); //Remove all current children node = buildLevel( defaultLevel, GeoExtent::INVALID, 0 ); } float minRange = -FLT_MAX; if ( _options.minRange().isSet() ) minRange = std::max(minRange, *_options.minRange()); if ( _options.layout().isSet() && _options.layout()->minRange().isSet() ) minRange = std::max(minRange, *_options.layout()->minRange()); float maxRange = FLT_MAX; if ( _options.maxRange().isSet() ) maxRange = std::min(maxRange, *_options.maxRange()); if ( _options.layout().isSet() && _options.layout()->maxRange().isSet() ) maxRange = std::min(maxRange, *_options.layout()->maxRange()); //If they've specified a min/max range, setup an LOD if ( minRange != -FLT_MAX || maxRange != FLT_MAX ) { // todo: revisit this, make sure this is still right. ElevationLOD *lod = new ElevationLOD(_session->getMapInfo().getSRS(), minRange, maxRange ); lod->addChild( node ); node = lod; } // If we want fading, install fading. if ( _options.fading().isSet() ) { FadeEffect* fader = new FadeEffect(); fader->setFadeDuration( *_options.fading()->duration() ); fader->setMaxRange( *_options.fading()->maxRange() ); fader->setAttenuationDistance( *_options.fading()->attenuationDistance() ); fader->addChild( node ); node = fader; } // overlay placeholder. this will make it easier to // replace with a clamper/draper later if necessary { _overlayInstalled->addChild( node ); node = _overlayInstalled; } addChild( node ); _session->getFeatureSource()->sync( _revision ); _dirty = false; }
void FeatureModelGraph::redraw() { removeChildren( 0, getNumChildren() ); // initialize the clamping node first, since we need it in order // to build the default level _clamper = new ClampableNode(0L, false); osg::Node* node = 0; // if there's a display schema in place, set up for quadtree paging. if ( _options.layout().isSet() || _useTiledSource ) { node = setupPaging(); } else { FeatureLevel defaultLevel( 0.0f, FLT_MAX ); //Remove all current children node = buildLevel( defaultLevel, GeoExtent::INVALID, 0 ); } float minRange = -FLT_MAX; if ( _options.minRange().isSet() ) minRange = std::max(minRange, *_options.minRange()); if ( _options.layout().isSet() && _options.layout()->minRange().isSet() ) minRange = std::max(minRange, *_options.layout()->minRange()); float maxRange = FLT_MAX; if ( _options.maxRange().isSet() ) maxRange = std::min(maxRange, *_options.maxRange()); if ( _options.layout().isSet() && _options.layout()->maxRange().isSet() ) maxRange = std::min(maxRange, *_options.layout()->maxRange()); //If they've specified a min/max range, setup an LOD if ( minRange != -FLT_MAX || maxRange != FLT_MAX ) { ElevationLOD *lod = new ElevationLOD(_session->getMapInfo().getSRS(), minRange, maxRange ); lod->addChild( node ); node = lod; } // If we want fading, install fading. if ( _options.fading().isSet() ) { FadeEffect* fader = new FadeEffect(); fader->setFadeDuration( *_options.fading()->duration() ); fader->setMaxRange( *_options.fading()->maxRange() ); fader->setAttenuationDistance( *_options.fading()->attenuationDistance() ); fader->addChild( node ); node = fader; } // clamper. TODO: figure out if we can optionally include this { _clamper->addChild( node ); node = _clamper; } addChild( node ); _session->getFeatureSource()->sync( _revision ); _dirty = false; }