void VRSceneLoader::loadScene(string path) { xmlpp::DomParser parser; parser.set_validate(false); parser.parse_file(path.c_str()); xmlpp::Node* n = parser.get_document()->get_root_node(); xmlpp::Element* sceneN = dynamic_cast<xmlpp::Element*>(n); // load scenegraph xmlpp::Element* objectsN = VRSceneLoader_getElementChild_(sceneN, "Objects"); xmlpp::Element* root = VRSceneLoader_getElementChild_(objectsN, 0); VRSceneManager::get()->closeScene(); auto scene = VRScenePtr( new VRScene() ); scene->setPath(path); VRSceneManager::get()->setWorkdir(scene->getWorkdir()); scene->setName(scene->getFileName()); VRSceneLoader_current_scene = scene; VRTimer timer; timer.start("total_time"); VRSceneLoader_loadObject(scene, scene->getRoot(), root); timer.stop("total_time"); VRSceneManager::get()->setScene(scene); scene->load(sceneN); //timer.print(); ihr_flag = false; }
void VRScript::execute() { if (type == "Python") { if (fkt == 0) return; if (!active) return; if (PyErr_Occurred() != NULL) PyErr_Print(); VRTimer timer; timer.start(); PyObject* pArgs = PyTuple_New(args.size()); int i=0; for (a_itr = args.begin(); a_itr != args.end(); a_itr++, i++) { arg* a = a_itr->second; a->pyo = getPyObj(a); PyTuple_SetItem(pArgs, i, a->pyo); a_itr->second = a; } PyObject_CallObject(fkt, pArgs); execution_time = timer.stop(); Py_XDECREF(pArgs); if (PyErr_Occurred() != NULL) PyErr_Print(); } if (type == "HTML") { VRMobile* mob = (VRMobile*)VRSetupManager::getCurrent()->getDevice(this->mobile); if (mob) mob->updateClients(getName()); } if (type == "GLSL") { for (auto m : VRMaterial::materials) { VRMaterial* mat = m.second; if (mat->getVertexScript() == getName()) mat->setVertexScript(getName()); if (mat->getFragmentScript() == getName()) mat->setFragmentScript(getName()); if (mat->getGeometryScript() == getName()) mat->setGeometryScript(getName()); } } }
void VRGlobals::FPS::update(VRTimer& t) { ms = t.stop(); fps = round(1000.0/max(ms,1lu)); }