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 00033 osg::ref_ptr<osg::Group> root; 00034 00035 std::vector<boost::shared_ptr<HUDCamera> > realcams; 00036 std::vector<boost::shared_ptr<ROSInterface> > ROSInterfaces; 00037 std::vector<osg::ref_ptr<osgWidget::Window> > camWidgets; 00038 00039 public: 00040 SceneBuilder(); 00041 SceneBuilder(int *argc, char **argv); 00042 SceneBuilder(boost::shared_ptr<osg::ArgumentParser> args); 00043 00044 bool loadScene(std::string xml_file); 00045 bool loadScene(ConfigFile config); 00046 00047 osg::Group* getRoot() 00048 { 00049 return root.get(); 00050 } 00051 osgOceanScene* getScene() 00052 { 00053 return scene.get(); 00054 } 00055 00056 ~SceneBuilder(); 00057 }; 00058 00059 #endif 00060