void SceneXMLParser::loadSimulation(const std::string& file_name, bool rendering_enabled, bool gpu_enabled, openglframework::GLFWViewer* viewer, Simulation** sim, scalar& dt, scalar& max_time, scalar& steps_per_sec_cap, openglframework::Color& bgcolor, std::string& description) { // Load the xml document std::vector<char> xmlchars; rapidxml::xml_document<> doc; loadXMLFile( file_name, xmlchars, doc ); // Attempt to locate the root node rapidxml::xml_node<>* node = doc.first_node("scene"); if( node == NULL ) { std::cerr << outputmod::startred << "ERROR IN XMLSCENEPARSER:" << outputmod::endred << "Failed to parse xml scene file. Failed to locate root <scene> node. Exiting." << std::endl; exit(1); } loadMaxTime(node, max_time); loadMaxSimFrequency(node, steps_per_sec_cap); if (rendering_enabled) { loadCamera(node, viewer); loadViewport(node, viewer); } Stepper* stepper = NULL; loadStepper(node, dt, &stepper); loadBackgroundColor(node, bgcolor); loadSceneDescriptionString(node, description); Scene* scene = new Scene(); loadSimpleGravityForces(node, *scene); loadFluids(node, *scene, gpu_enabled); SceneRenderer *renderer = NULL; if (rendering_enabled) renderer = new SceneRenderer(scene); *sim = new Simulation(scene, stepper, renderer); }
GLGraphicsContext::GLGraphicsContext() { loadViewport(); loadCapabilities(); }