- Timestamp:
- 04/29/05 08:32:13 (8 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgfxbrowser/osgfxbrowser.cpp
r3721 r4119 30 30 public: 31 31 RotateCallback(): osg::NodeCallback(), enabled_(true) {} 32 void operator()(osg::Node *node, osg::NodeVisitor *nv)32 void operator()(osg::Node* node, osg::NodeVisitor *nv) 33 33 { 34 34 osg::MatrixTransform *xform = dynamic_cast<osg::MatrixTransform *>(node); … … 54 54 class KeyboardHandler: public osgGA::GUIEventHandler { 55 55 public: 56 KeyboardHandler(EffectPanel *ep): ep_(ep) {}56 KeyboardHandler(EffectPanel* ep): ep_(ep) {} 57 57 58 58 bool handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &) … … 95 95 EffectPanel() 96 96 : osgfxbrowser::Frame(), 97 selected_fx_(-1),98 fxen_(true),99 root_(new osg::Group),100 hints_color_(0.75f, 0.75f, 0.75f, 1.0f),101 name_color_(1, 1, 1, 1),102 desc_color_(1, 1, 0.7f, 1)97 _selected_fx(-1), 98 _fxen(true), 99 _root(new osg::Group), 100 _hints_color(0.75f, 0.75f, 0.75f, 1.0f), 101 _name_color(1, 1, 1, 1), 102 _desc_color(1, 1, 0.7f, 1) 103 103 { 104 104 setBackgroundColor(osg::Vec4(0.3f, 0.1f, 0.15f, 0.75f)); 105 105 106 106 std::cout << "INFO: available osgFX effects:\n"; 107 osgFX::Registry::Effect _map emap = osgFX::Registry::instance()->getEffectMap();108 for (osgFX::Registry::Effect _map::const_iterator i=emap.begin(); i!=emap.end(); ++i) {107 osgFX::Registry::EffectMap emap = osgFX::Registry::instance()->getEffectMap(); 108 for (osgFX::Registry::EffectMap::const_iterator i=emap.begin(); i!=emap.end(); ++i) { 109 109 std::cout << "INFO: \t" << i->first << "\n"; 110 110 osg::ref_ptr<osgFX::Effect> effect = static_cast<osgFX::Effect *>(i->second->cloneType()); 111 effects_.push_back(effect.get());111 _effects.push_back(effect.get()); 112 112 } 113 113 114 114 std::cout << "INFO: " << emap.size() << " effect(s) ready.\n"; 115 115 116 if (! effects_.empty()) {117 selected_fx_= 0;118 } 119 } 120 121 inline osg::Group *getRoot() { return root_.get(); }122 inline void setRoot(osg::Group *node) { root_= node; }123 124 inline osg::Node *getScene() { return scene_.get(); }125 inline void setScene(osg::Node *node) { scene_= node; }126 127 inline bool getEffectsEnabled() const { return fxen_; }116 if (!_effects.empty()) { 117 _selected_fx = 0; 118 } 119 } 120 121 inline osg::Group* getRoot() { return _root.get(); } 122 inline void setRoot(osg::Group* node) { _root = node; } 123 124 inline osg::Node* getScene() { return _scene.get(); } 125 inline void setScene(osg::Node* node) { _scene = node; } 126 127 inline bool getEffectsEnabled() const { return _fxen; } 128 128 inline void setEffectsEnabled(bool v) 129 129 { 130 fxen_= v;130 _fxen = v; 131 131 if (getSelectedEffect()) { 132 getSelectedEffect()->setEnabled( fxen_);133 } 134 } 135 136 inline int getEffectIndex() const { return selected_fx_; }132 getSelectedEffect()->setEnabled(_fxen); 133 } 134 } 135 136 inline int getEffectIndex() const { return _selected_fx; } 137 137 inline void setEffectIndex(int i) 138 138 { 139 if (i >= static_cast<int>( effects_.size())) i = 0;140 if (i < 0) i = static_cast<int>( effects_.size()-1);141 selected_fx_= i;139 if (i >= static_cast<int>(_effects.size())) i = 0; 140 if (i < 0) i = static_cast<int>(_effects.size()-1); 141 _selected_fx = i; 142 142 rebuild(); 143 143 } … … 145 145 inline osgFX::Effect *getSelectedEffect() 146 146 { 147 if ( selected_fx_ >= 0 && selected_fx_ < static_cast<int>(effects_.size())) {148 return effects_[selected_fx_].get();147 if (_selected_fx >= 0 && _selected_fx < static_cast<int>(_effects.size())) { 148 return _effects[_selected_fx].get(); 149 149 } 150 150 return 0; … … 161 161 osg::ref_ptr<osgText::Text> hints = new osgText::Text; 162 162 hints->setFont(arial.get()); 163 hints->setColor( hints_color_);163 hints->setColor(_hints_color); 164 164 hints->setAlignment(osgText::Text::CENTER_BOTTOM); 165 165 hints->setCharacterSize(13); … … 172 172 std::string effect_description = ""; 173 173 174 if ( selected_fx_ >= 0 && selected_fx_ < static_cast<int>(effects_.size())) {175 effect_name = effects_[selected_fx_]->effectName();176 std::string author_name = effects_[selected_fx_]->effectAuthor();174 if (_selected_fx >= 0 && _selected_fx < static_cast<int>(_effects.size())) { 175 effect_name = _effects[_selected_fx]->effectName(); 176 std::string author_name = _effects[_selected_fx]->effectAuthor(); 177 177 if (!author_name.empty()) { 178 effect_description = author_name = "AUTHOR: " + std::string( effects_[selected_fx_]->effectAuthor()) + std::string("\n\n");178 effect_description = author_name = "AUTHOR: " + std::string(_effects[_selected_fx]->effectAuthor()) + std::string("\n\n"); 179 179 } 180 effect_description += "DESCRIPTION:\n" + std::string( effects_[selected_fx_]->effectDescription());181 182 if ( scene_.valid() && root_.valid()) {183 root_->removeChild(0, root_->getNumChildren());184 osg::ref_ptr<osgFX::Effect> effect = effects_[selected_fx_].get();185 effect->setEnabled( fxen_);180 effect_description += "DESCRIPTION:\n" + std::string(_effects[_selected_fx]->effectDescription()); 181 182 if (_scene.valid() && _root.valid()) { 183 _root->removeChild(0, _root->getNumChildren()); 184 osg::ref_ptr<osgFX::Effect> effect = _effects[_selected_fx].get(); 185 effect->setEnabled(_fxen); 186 186 effect->removeChild(0, effect->getNumChildren()); 187 effect->addChild( scene_.get());187 effect->addChild(_scene.get()); 188 188 effect->setUpDemo(); 189 root_->addChild(effect.get());189 _root->addChild(effect.get()); 190 190 } 191 191 } … … 193 193 osg::ref_ptr<osgText::Text> ename = new osgText::Text; 194 194 ename->setFont(arial.get()); 195 ename->setColor( name_color_);195 ename->setColor(_name_color); 196 196 ename->setAlignment(osgText::Text::CENTER_TOP); 197 197 ename->setCharacterSize(32); … … 204 204 edesc->setMaximumWidth(client_rect.width() - 16); 205 205 edesc->setFont(arial.get()); 206 edesc->setColor( desc_color_);206 edesc->setColor(_desc_color); 207 207 edesc->setAlignment(osgText::Text::LEFT_TOP); 208 208 edesc->setCharacterSize(16); … … 214 214 215 215 private: 216 int selected_fx_;216 int _selected_fx; 217 217 typedef std::vector<osg::ref_ptr<osgFX::Effect> > Effect_list; 218 Effect_list effects_;219 bool fxen_;220 osg::ref_ptr<osg::Group> root_;221 osg::ref_ptr<osg::Node> scene_;222 osg::Vec4 hints_color_;223 osg::Vec4 name_color_;224 osg::Vec4 desc_color_;218 Effect_list _effects; 219 bool _fxen; 220 osg::ref_ptr<osg::Group> _root; 221 osg::ref_ptr<osg::Node> _scene; 222 osg::Vec4 _hints_color; 223 osg::Vec4 _name_color; 224 osg::Vec4 _desc_color; 225 225 }; 226 226 227 227 228 osg::Group *build_hud_base(osg::Group *root)228 osg::Group* build_hud_base(osg::Group* root) 229 229 { 230 230 osg::ref_ptr<osg::Projection> proj = new osg::Projection(osg::Matrix::ortho2D(0, 1024, 0, 768)); … … 247 247 } 248 248 249 EffectPanel *build_gui(osg::Group *root)249 EffectPanel* build_gui(osg::Group* root) 250 250 { 251 251 osg::ref_ptr<osg::Group> hud = build_hud_base(root); … … 260 260 } 261 261 262 void build_world(osg::Group *root, osg::Node *scene, osgProducer::Viewer &viewer)262 void build_world(osg::Group* root, osg::Node* scene, osgProducer::Viewer& viewer) 263 263 { 264 264 osg::ref_ptr<EffectPanel> effect_panel = build_gui(root);
