Changeset 6050 for geovis


Ignore:
Timestamp:
Feb 24, 2016 6:40:50 PM (8 years ago)
Author:
ldelgass
Message:

Add simple on/off select mode

Location:
geovis/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • geovis/trunk/Renderer.cpp

    r6049 r6050  
    15281528            _picker->addChild(_placeNodes.get());
    15291529        }
     1530    }
     1531}
     1532
     1533void Renderer::setSelectMode(SelectMode mode)
     1534{
     1535    _selectMode = mode;
     1536    switch (_selectMode) {
     1537    case SELECT_OFF: {
     1538#ifdef USE_RTT_PICKER
     1539        if (_picker.valid()) {
     1540            _viewer->removeEventHandler(_picker.get());
     1541            _picker = NULL;
     1542        }
     1543#endif
     1544    }
     1545        break;
     1546    case SELECT_ON: {
     1547#ifdef USE_RTT_PICKER
     1548        if (!_picker.valid()) {
     1549            _picker = new osgEarth::Util::RTTPicker;
     1550            _picker->addChild(_mapNode);
     1551            osg::ref_ptr<SelectCallback> callback = new SelectCallback(this);
     1552            _picker->setDefaultCallback(callback.get());
     1553            _viewer->addEventHandler(_picker.get());
     1554        }
     1555#endif
     1556    }
     1557        break;
     1558    default:
     1559        ERROR("Unknown select mode");
    15301560    }
    15311561}
  • geovis/trunk/Renderer.h

    r6049 r6050  
    136136    };
    137137
     138    enum SelectMode {
     139        SELECT_OFF,
     140        SELECT_ON
     141    };
     142
    138143    Renderer();
    139144    virtual ~Renderer();
     
    519524    void setPlacardConfig(const Placard& placardConf, const char *layerName);
    520525
     526    void setSelectMode(SelectMode mode);
     527
    521528    void selectFeatures(std::vector<unsigned long>& featureIDs, const char *layerName);
    522529
     
    628635    PlacardHashmap _placardConfigs;
    629636    double _anchorLat, _anchorLong;
     637    SelectMode _selectMode;
    630638    osg::ref_ptr<osgEarth::Annotation::FeatureNode> _selectionBox;
    631639#ifdef USE_RTT_PICKER
  • geovis/trunk/RendererCmd.cpp

    r6049 r6050  
    34343434    const char *modeStr = Tcl_GetString(objv[2]);
    34353435    // Parse mode string
    3436     //Renderer::SelectMode mode;
    3437     //g_renderer->setSelectMode(mode);
     3436    Renderer::SelectMode mode Renderer::SELECT_OFF;
     3437    if (modeStr[0] == 'o' && strcmp(modeStr, "off") == 0) {
     3438        mode = Renderer::SELECT_OFF;
     3439    } else if (modeStr[0] == 'o' && strcmp(modeStr, "on") == 0) {
     3440        mode = Renderer::SELECT_ON;
     3441    } else {
     3442        Tcl_AppendResult(interp, "bad select mode \"", modeStr,
     3443                             "\": must be 'on' or 'off'", (char*)NULL);
     3444        return TCL_ERROR;
     3445    }
     3446    g_renderer->setSelectMode(mode);
    34383447    return TCL_OK;
    34393448}
Note: See TracChangeset for help on using the changeset viewer.