00001 /* 00002 * Copyright (c) 2013 University of Jaume-I. 00003 * All rights reserved. This program and the accompanying materials 00004 * are made available under the terms of the GNU Public License v3.0 00005 * which accompanies this distribution, and is available at 00006 * http://www.gnu.org/licenses/gpl.html 00007 * 00008 * Contributors: 00009 * Mario Prats 00010 * Javier Perez 00011 */ 00012 00013 #ifndef SCENEBUILDER_H 00014 #define SCENEBUILDER_H 00015 00016 #include <osgWidget/Util> 00017 #include <osgOcean/OceanScene> 00018 00019 #include "osgOceanScene.h" 00020 #include "HUDCamera.h" 00021 #include "ROSInterface.h" 00022 #include "SimulatedIAUV.h" 00023 #include "ConfigXMLParser.h" 00024 00025 class SceneBuilder 00026 { 00027 public: 00028 boost::shared_ptr<osg::ArgumentParser> arguments; 00029 osg::ref_ptr<osgOceanScene> scene; 00030 std::vector<boost::shared_ptr<SimulatedIAUV> > iauvFile; 00031 std::vector<osg::ref_ptr<osg::Node> > objects; 00032 std::vector<osg::ref_ptr<osg::Node> > trajectories; 00033 00034 osg::ref_ptr<osg::Group> root; 00035 00036 std::vector<boost::shared_ptr<HUDCamera> > realcams; 00037 std::vector<boost::shared_ptr<ROSInterface> > ROSInterfaces; 00038 std::vector<osg::ref_ptr<osgWidget::Window> > camWidgets; 00039 00040 public: 00041 SceneBuilder(); 00042 SceneBuilder(int *argc, char **argv); 00043 SceneBuilder(boost::shared_ptr<osg::ArgumentParser> args); 00044 00045 bool loadScene(std::string xml_file); 00046 bool loadScene(ConfigFile config); 00047 00048 osg::Group* getRoot() 00049 { 00050 return root.get(); 00051 } 00052 osgOceanScene* getScene() 00053 { 00054 return scene.get(); 00055 } 00056 00057 ~SceneBuilder(); 00058 }; 00059 00060 #endif 00061