Beispiel #1
0
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;
}
Beispiel #2
0
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());
        }
    }
}
Beispiel #3
0
void VRGlobals::FPS::update(VRTimer& t) {
    ms = t.stop();
    fps = round(1000.0/max(ms,1lu));
}