/* Copyright Robert Osfield, Licensed under the GPL * * Experimental base for refactor of Present3D * */ #include #include #include #include #include #include #include #include int main(int argc, char** argv) { osg::ArgumentParser arguments(&argc, argv); osgViewer::Viewer viewer(arguments); typedef std::list< osg::ref_ptr > Scripts; Scripts scripts; std::string filename; while(arguments.read("--script",filename)) { osg::ref_ptr script = osgDB::readFile(filename); if (script.valid()) scripts.push_back(script.get()); } // create the model osg::ref_ptr model = osgDB::readNodeFiles(arguments); if (!model) return 1; // assgin script engine to scene graphs model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile("ScriptEngine.lua")); model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile("ScriptEngine.python")); model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile("ScriptEngine.js")); // assign scripts to scene graph for(Scripts::iterator itr = scripts.begin(); itr != scripts.end(); ++itr) { model->addUpdateCallback(new osg::ScriptCallback(itr->get())); } #if 0 std::string str; osg::ref_ptr luaScriptEngine = osgDB::readFile("ScriptEngine.lua"); if (luaScriptEngine.valid()) { while (arguments.read("--lua", str)) { osg::ref_ptr script = osgDB::readFile(str); if (script.valid()) { luaScriptEngine->run(script.get()); } } } osg::ref_ptr v8ScriptEngine = osgDB::readFile("ScriptEngine.V8"); if (v8ScriptEngine.valid()) { while (arguments.read("--js",str)) { osg::ref_ptr script = osgDB::readFile(str); if (script.valid()) { v8ScriptEngine->run(script.get()); } } } osg::ref_ptr pythonScriptEngine = osgDB::readFile("ScriptEngine.python"); if (pythonScriptEngine.valid()) { while (arguments.read("--python",str)) { osg::ref_ptr script = osgDB::readFile(str); if (script.valid()) { pythonScriptEngine->run(script.get()); } } } #endif viewer.setSceneData( model.get() ); return viewer.run(); }