Changeset 13799

Show
Ignore:
Timestamp:
08/28/14 17:11:29 (10 hours ago)
Author:
robert
Message:

Improved support for controlling the ShadingModel? via the VolumeSettings? object

Location:
OpenSceneGraph/trunk
Files:
10 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgpresentation/osgpresentation.cpp

    r13796 r13799  
    147147    presentation->setProperty("scale",1.0); 
    148148 
    149  
     149#if 0 
    150150    osgPresentation::PrintSupportedProperties psp(std::cout); 
    151151    presentation->accept(psp); 
     
    153153    osgPresentation::PrintProperties pp(std::cout); 
    154154    presentation->accept(pp); 
     155#endif 
    155156 
    156157    osgPresentation::LoadAction load; 
     
    224225    } 
    225226#endif 
     227 
     228 
     229 
    226230    presentation->setName("[this is a test]"); 
     231 
     232#if 0 
    227233 
    228234    if (pi.setProperty(presentation.get(), "Name", std::string("[this is new improved test]"))) 
     
    403409    PRINT_TYPE(presentation.get(), mymatrix) 
    404410 
    405      
    406411    osg::ref_ptr<osgGA::GUIEventAdapter> event = new osgGA::GUIEventAdapter; 
    407412    if (pi.getSupportedProperties(event.get(), properties, true)) 
     
    419424        OSG_NOTICE<<"No supported properites found."<<std::endl; 
    420425    } 
    421      
    422  
    423  
    424 //    return viewer.run(); 
     426#endif 
     427 
     428    osg::ref_ptr<osg::ScriptEngine> luaScriptEngine = osgDB::readFile<osg::ScriptEngine>("ScriptEngine.lua"); 
     429    if (luaScriptEngine.valid()) 
     430    { 
     431        presentation->getOrCreateUserDataContainer()->addUserObject(luaScriptEngine.get()); 
     432        std::string str; 
     433        while (arguments.read("--lua", str)) 
     434        { 
     435            osg::ref_ptr<osg::Script> script = osgDB::readFile<osg::Script>(str); 
     436            if (script.valid()) 
     437            { 
     438                presentation->addUpdateCallback(new osg::ScriptCallback(script.get(),"doStuff")); 
     439            } 
     440        } 
     441 
     442 
     443        if (arguments.read("--test", str)) 
     444        { 
     445            osg::ref_ptr<osg::Script> script = osgDB::readFile<osg::Script>(str); 
     446            if (script.valid()) 
     447            { 
     448                osg::ScriptEngine::Parameters inputParameters; 
     449                osg::ScriptEngine::Parameters outputParameters; 
     450 
     451                inputParameters.push_back(new osg::StringValueObject("string","my very first string input")); 
     452                inputParameters.push_back(new osg::DoubleValueObject("double",1.234)); 
     453                inputParameters.push_back(new osg::MatrixfValueObject("matrix",osg::Matrixf())); 
     454 
     455                osg::ref_ptr<osg::MatrixdValueObject> svo = new osg::MatrixdValueObject("return", osg::Matrixd()); 
     456                outputParameters.push_back(svo.get()); 
     457 
     458                if (luaScriptEngine->run(script.get(), "test", inputParameters, outputParameters)) 
     459                { 
     460                    OSG_NOTICE<<"Successfully ran script : return value = "<<svo->getValue()<<std::endl; 
     461                } 
     462                else 
     463                { 
     464                    OSG_NOTICE<<"script run failed"<<std::endl; 
     465                } 
     466            } 
     467        } 
     468    } 
     469 
     470 
     471    return viewer.run(); 
    425472 
    426473 
  • OpenSceneGraph/trunk/include/osg/ScriptEngine

    r13719 r13799  
    5757{ 
    5858    public: 
    59         ScriptCallback(Script* script=0) : _script(script) {} 
     59        ScriptCallback(Script* script=0, const std::string& entryPoint="") : _script(script), _entryPoint(entryPoint) {} 
    6060        ScriptCallback(const ScriptCallback& rhs, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY): osg::NodeCallback(rhs,copyop), _script(rhs._script) {} 
    6161 
     
    8181        virtual ~ScriptCallback() {} 
    8282 
    83         osg::ref_ptr<Script> _script; 
     83        osg::ref_ptr<Script>    _script; 
     84        std::string             _entryPoint; 
    8485}; 
    8586 
     
    9394        inline const std::string& getLanguage() const { return _language; } 
    9495 
     96        typedef std::vector< osg::ref_ptr<osg::Object> > Parameters; 
     97 
    9598        /** run a Script.*/ 
    96         virtual void run(osg::Script* script) = 0; 
     99        bool run(osg::Script* script) 
     100        { 
     101            // assumpt empty input and output paramters lists 
     102            Parameters inputParameters, outputParameters; 
     103            return run(script, "", inputParameters, outputParameters); 
     104        } 
     105 
     106        /** run a Script.*/ 
     107        virtual bool run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters) = 0; 
    97108 
    98109    protected: 
  • OpenSceneGraph/trunk/src/osg/ScriptEngine.cpp

    r13719 r13799  
    4141    if (engine && _script.valid()) 
    4242    { 
    43         engine->run(_script.get()); 
     43        // To handle the case where a NodeVisitor is created on the stack and can't be automatically ref counted 
     44        // we take a reference to prevent the inputParameters reference to the NodeVisitor making it's ref count going to zero and causing a delete. 
     45        ref_ptr<NodeVisitor> ref_nv(nv); 
     46 
     47        { 
     48            ScriptEngine::Parameters inputParameters; 
     49            inputParameters.push_back(node); 
     50            inputParameters.push_back(nv); 
     51 
     52            // empty outputParameters 
     53            ScriptEngine::Parameters outputParameters; 
     54 
     55            engine->run(_script.get(), _entryPoint, inputParameters, outputParameters); 
     56        } 
     57 
     58        // now release the ref_ptr used to protected the NodeVisitor from deletion. 
     59        ref_nv.release(); 
    4460    } 
    4561 
  • OpenSceneGraph/trunk/src/osgPlugins/V8/V8ScriptEngine.cpp

    r13719 r13799  
    4242} 
    4343 
    44 void V8ScriptEngine::run(osg::Script* script) 
     44bool V8ScriptEngine::run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters) 
    4545{ 
    46     if (!script || !_isolate) return; 
     46    if (!script || !_isolate) return false; 
    4747 
    4848    v8::Locker locker(_isolate); 
     
    7676        printf("%s\n", *ascii); 
    7777    } 
    78          
     78 
    7979    _globalTemplate.Dispose(); 
    8080    _globalContext.Dispose(); 
    8181 
     82    return true; 
    8283} 
  • OpenSceneGraph/trunk/src/osgPlugins/V8/V8ScriptEngine.h

    r13719 r13799  
    3333 
    3434        /** run a Script.*/ 
    35         virtual void run(osg::Script* script); 
     35        virtual bool run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters); 
    3636 
    3737        v8::Isolate* getIsolate() { return _isolate; } 
  • OpenSceneGraph/trunk/src/osgPlugins/lua/LuaScriptEngine.cpp

    r13719 r13799  
    1313 
    1414#include "LuaScriptEngine.h" 
     15#include <osg/io_utils> 
    1516 
    1617using namespace lua; 
     
    4142} 
    4243 
    43 void LuaScriptEngine::run(osg::Script* script) 
    44 { 
    45     if (!script || !_lua) return; 
    46  
    47     if (luaL_dostring(_lua, script->getScript().c_str())) 
    48     { 
    49         OSG_NOTICE << "LuaScriptEngine::run(Script*) error: " << lua_tostring(_lua, -1) << std::endl; 
    50     } 
    51 } 
     44bool LuaScriptEngine::loadScript(osg::Script* script) 
     45{ 
     46    if (_loadedScripts.count(script)!=0) return true; 
     47 
     48    int loadResult = luaL_loadstring(_lua, script->getScript().c_str()); 
     49    if (loadResult==0) 
     50    { 
     51        OSG_NOTICE<<"Loaded script"<<std::endl; 
     52 
     53        _loadedScripts.insert(script); 
     54        return true; 
     55    } 
     56    else 
     57    { 
     58        OSG_NOTICE << "LuaScriptEngine::luaL_loadstring(Script*) error: " << lua_tostring(_lua, -1) << std::endl; 
     59        return false; 
     60    } 
     61} 
     62 
     63 
     64bool LuaScriptEngine::run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters) 
     65{ 
     66    if (!script || !_lua) return false; 
     67 
     68    if (_loadedScripts.count(script)==0) 
     69    { 
     70        if (!loadScript(script)) return false; 
     71 
     72        if (lua_pcall(_lua, 0, 0, 0)!=0) 
     73        { 
     74            OSG_NOTICE<< "error initialize script "<< lua_tostring(_lua, -1)<<std::endl; 
     75            return false; 
     76        } 
     77    } 
     78 
     79    if (entryPoint.empty()) 
     80    { 
     81        int callResult = lua_pcall(_lua, 0, LUA_MULTRET, 0); 
     82        if (callResult) 
     83        { 
     84            OSG_NOTICE << "LuaScriptEngine::call(Script*) error: " << lua_tostring(_lua, -1) << std::endl; 
     85            return false; 
     86        } 
     87        OSG_NOTICE << "Successful run " << std::endl; 
     88        return true; 
     89    } 
     90    else 
     91    { 
     92 
     93 
     94        lua_getfield(_lua, LUA_GLOBALSINDEX, entryPoint.c_str()); /* function to be called */ 
     95 
     96        for(osg::ScriptEngine::Parameters::const_iterator itr = inputParameters.begin(); 
     97            itr != inputParameters.end(); 
     98            ++itr) 
     99        { 
     100            pushParameter(itr->get()); 
     101        } 
     102 
     103 
     104        if (lua_pcall(_lua, inputParameters.size(), outputParameters.size(),0)!=0) 
     105        { 
     106            OSG_NOTICE<<"Lua error : "<<lua_tostring(_lua, -1)<<std::endl; 
     107            return false; 
     108        } 
     109 
     110        for(osg::ScriptEngine::Parameters::const_iterator itr = outputParameters.begin(); 
     111            itr != outputParameters.end(); 
     112            ++itr) 
     113        { 
     114            popParameter(itr->get()); 
     115        } 
     116        return true; 
     117    } 
     118    return false; 
     119} 
     120 
     121 
     122class PushStackValueVisitor : public osg::ValueObject::GetValueVisitor 
     123{ 
     124public: 
     125 
     126    lua_State* _lua; 
     127 
     128    PushStackValueVisitor(lua_State* lua) : _lua(lua) {} 
     129 
     130    inline void push(const char* str, double value) 
     131    { 
     132        lua_pushstring(_lua, str); lua_pushnumber(_lua, value); lua_settable(_lua, -3); 
     133    } 
     134 
     135    inline void pushElem(unsigned int i, double value) 
     136    { 
     137        lua_pushnumber(_lua, i); lua_pushinteger(_lua, value); lua_settable(_lua, -3); 
     138    } 
     139 
     140    virtual void apply(bool value)                      { lua_pushboolean(_lua, value ? 0 : 1); } 
     141    virtual void apply(char value)                      { lua_pushnumber(_lua, value); } 
     142    virtual void apply(unsigned char value)             { lua_pushnumber(_lua, value); } 
     143    virtual void apply(short value)                     { lua_pushnumber(_lua, value); } 
     144    virtual void apply(unsigned short value)            { lua_pushnumber(_lua, value); } 
     145    virtual void apply(int value)                       { lua_pushnumber(_lua, value); } 
     146    virtual void apply(unsigned int value)              { lua_pushnumber(_lua, value); } 
     147    virtual void apply(float value)                     { lua_pushnumber(_lua, value); } 
     148    virtual void apply(double value)                    { lua_pushnumber(_lua, value); } 
     149    virtual void apply(const std::string& value)        { lua_pushlstring(_lua, &value[0], value.size()); } 
     150    virtual void apply(const osg::Vec2f& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); } 
     151    virtual void apply(const osg::Vec3f& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); push("z", value.z()); } 
     152    virtual void apply(const osg::Vec4f& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); push("z", value.z());  push("w", value.w()); } 
     153    virtual void apply(const osg::Vec2d& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); } 
     154    virtual void apply(const osg::Vec3d& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); push("z", value.z()); } 
     155    virtual void apply(const osg::Vec4d& value)         { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); push("z", value.z());  push("w", value.w()); } 
     156    virtual void apply(const osg::Quat& value)          { lua_newtable(_lua); push("x", value.x()); push("y", value.y()); push("z", value.z());  push("w", value.w()); } 
     157    virtual void apply(const osg::Plane& value)         { lua_newtable(_lua); pushElem(0, value[0]); pushElem(1, value[1]); pushElem(2, value[2]);  pushElem(3, value[3]); } 
     158    virtual void apply(const osg::Matrixf& value)       { lua_newtable(_lua); for(unsigned int r=0; r<4; ++r) { for(unsigned int c=0; c<4; ++c) { pushElem(r*4+c, value(r,c)); } } } 
     159    virtual void apply(const osg::Matrixd& value)       { lua_newtable(_lua); for(unsigned int r=0; r<4; ++r) { for(unsigned int c=0; c<4; ++c) { pushElem(r*4+c, value(r,c)); } } } 
     160}; 
     161 
     162class GetStackValueVisitor : public osg::ValueObject::SetValueVisitor 
     163{ 
     164public: 
     165 
     166    lua_State* _lua; 
     167    int _index; 
     168    int _numberToPop; 
     169 
     170    GetStackValueVisitor(lua_State* lua, int index) : _lua(lua), _index(index), _numberToPop(0) {} 
     171 
     172    void print(int index) 
     173    { 
     174        OSG_NOTICE<<"lua_type("<<index<<") = "; 
     175        switch(lua_type(_lua, index)) 
     176        { 
     177            case(LUA_TNIL): OSG_NOTICE<<"LUA_TNIL "<<std::endl; break; 
     178            case(LUA_TNUMBER): OSG_NOTICE<<"LUA_TNUMBER "<<lua_tonumber(_lua, index)<<std::endl; break; 
     179            case(LUA_TBOOLEAN): OSG_NOTICE<<"LUA_TBOOLEAN "<<lua_toboolean(_lua, index)<<std::endl; break; 
     180            case(LUA_TSTRING): OSG_NOTICE<<"LUA_TSTRING "<<lua_tostring(_lua, index)<<std::endl; break; 
     181            case(LUA_TTABLE): OSG_NOTICE<<"LUA_TTABLE "<<std::endl; break; 
     182            case(LUA_TFUNCTION): OSG_NOTICE<<"LUA_TFUNCTION "<<std::endl; break; 
     183            case(LUA_TUSERDATA): OSG_NOTICE<<"LUA_TUSERDATA "<<std::endl; break; 
     184            case(LUA_TTHREAD): OSG_NOTICE<<"LUA_TTHREAD "<<std::endl; break; 
     185            case(LUA_TLIGHTUSERDATA): OSG_NOTICE<<"LUA_TLIGHTUSERDATA "<<std::endl; break; 
     186            default: OSG_NOTICE<<lua_typename(_lua, index)<<std::endl; break; 
     187        } 
     188    } 
     189 
     190    template<typename T> 
     191    void get2(T& value) 
     192    { 
     193        if (lua_istable(_lua, _index)) 
     194        { 
     195            lua_getfield(_lua, _index,   "x"); 
     196            lua_getfield(_lua, _index-1, "y"); 
     197 
     198            if (lua_isnumber(_lua, -2)) value.x() = lua_tonumber(_lua, -2); 
     199            if (lua_isnumber(_lua, -1)) value.y() = lua_tonumber(_lua, -1); 
     200 
     201            _numberToPop = 3; 
     202        } 
     203    } 
     204 
     205    template<typename T> 
     206    void get3(T& value) 
     207    { 
     208        if (lua_istable(_lua, _index)) 
     209        { 
     210            lua_getfield(_lua, _index,   "x"); 
     211            lua_getfield(_lua, _index-1, "y"); 
     212            lua_getfield(_lua, _index-2, "z"); 
     213 
     214            if (lua_isnumber(_lua, -3)) value.x() = lua_tonumber(_lua, -3); 
     215            if (lua_isnumber(_lua, -2)) value.y() = lua_tonumber(_lua, -2); 
     216            if (lua_isnumber(_lua, -1)) value.z() = lua_tonumber(_lua, -1); 
     217 
     218            _numberToPop = 4; 
     219        } 
     220    } 
     221 
     222    template<typename T> 
     223    void get4(T& value) 
     224    { 
     225        if (lua_istable(_lua, _index)) 
     226        { 
     227            lua_getfield(_lua, _index,   "x"); 
     228            lua_getfield(_lua, _index-1, "y"); 
     229            lua_getfield(_lua, _index-2, "z"); 
     230            lua_getfield(_lua, _index-3, "w"); 
     231 
     232            if (lua_isnumber(_lua, -4)) value.x() = lua_tonumber(_lua, -4); 
     233            if (lua_isnumber(_lua, -3)) value.y() = lua_tonumber(_lua, -3); 
     234            if (lua_isnumber(_lua, -2)) value.z() = lua_tonumber(_lua, -2); 
     235            if (lua_isnumber(_lua, -1)) value.w() = lua_tonumber(_lua, -1); 
     236 
     237            _numberToPop = 5; 
     238        } 
     239    } 
     240 
     241    template<typename T> 
     242    void getMatrix(T& value) 
     243    { 
     244        if (lua_istable(_lua, _index)) 
     245        { 
     246            for(unsigned int r=0; r<4; ++r) 
     247            { 
     248                for(unsigned c=0; c<4; ++c) 
     249                { 
     250                    lua_rawgeti(_lua, _index, r*4+c); 
     251                    if (lua_isnumber(_lua, -1)) value(r,c) = lua_tonumber(_lua, -1); 
     252                    lua_pop(_lua, 1); 
     253                } 
     254            } 
     255 
     256            _numberToPop = 1; 
     257        } 
     258    } 
     259 
     260    virtual void apply(bool& value)             { if (lua_isboolean(_lua, _index)) { value = (lua_toboolean(_lua, _index)!=0); _numberToPop = 1; } } 
     261    virtual void apply(char& value)             { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     262    virtual void apply(unsigned char& value)    { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     263    virtual void apply(short& value)            { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     264    virtual void apply(unsigned short& value)   { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     265    virtual void apply(int& value)              { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     266    virtual void apply(unsigned int& value)     { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     267    virtual void apply(float& value)            { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     268    virtual void apply(double& value)           { if (lua_isnumber(_lua, _index)) { value = lua_tonumber(_lua, _index)!=0; _numberToPop = 1; } } 
     269    virtual void apply(std::string& value)      { if (lua_isstring(_lua, _index)) { value = std::string(lua_tostring(_lua, _index), lua_strlen(_lua, _index)); } OSG_NOTICE<<"got string value = "<<value<<std::endl; } 
     270    virtual void apply(osg::Vec2f& value)       { get2(value); } 
     271    virtual void apply(osg::Vec3f& value)       { get3(value); } 
     272    virtual void apply(osg::Vec4f& value)       { get4(value); } 
     273    virtual void apply(osg::Vec2d& value)       { get2(value); } 
     274    virtual void apply(osg::Vec3d& value)       { get3(value); } 
     275    virtual void apply(osg::Vec4d& value)       { get4(value); } 
     276    virtual void apply(osg::Quat& value)        { get4(value); } 
     277    virtual void apply(osg::Plane& value) 
     278    { 
     279        if (lua_istable(_lua, _index)) 
     280        { 
     281            lua_rawgeti(_lua, _index,   0); 
     282            lua_rawgeti(_lua, _index-1, 1); 
     283            lua_rawgeti(_lua, _index-2, 2); 
     284            lua_rawgeti(_lua, _index-3, 3); 
     285 
     286            if (lua_isnumber(_lua, -4)) value[0] = lua_tonumber(_lua, -4); 
     287            if (lua_isnumber(_lua, -3)) value[1] = lua_tonumber(_lua, -3); 
     288            if (lua_isnumber(_lua, -2)) value[2] = lua_tonumber(_lua, -2); 
     289            if (lua_isnumber(_lua, -1)) value[3] = lua_tonumber(_lua, -1); 
     290 
     291            _numberToPop = 5; 
     292        } 
     293    } 
     294    virtual void apply(osg::Matrixf& value) { getMatrix(value); } 
     295    virtual void apply(osg::Matrixd& value) { getMatrix(value); } 
     296}; 
     297 
     298 
     299bool LuaScriptEngine::pushParameter(osg::Object* object) 
     300{ 
     301    OSG_NOTICE<<"pushParameter("<<object->className()<<")"<<std::endl; 
     302 
     303    osg::ValueObject* vo = dynamic_cast<osg::ValueObject*>(object); 
     304    if (vo) 
     305    { 
     306        PushStackValueVisitor pvv(_lua); 
     307        vo->get(pvv); 
     308    } 
     309    else 
     310    { 
     311        lua_pushstring(_lua, object->className()); 
     312    } 
     313 
     314    return false; 
     315} 
     316 
     317bool LuaScriptEngine::popParameter(osg::Object* object) 
     318{ 
     319    OSG_NOTICE<<"popParameter("<<object->className()<<")"<<std::endl; 
     320 
     321    osg::ValueObject* vo = dynamic_cast<osg::ValueObject*>(object); 
     322    if (vo) 
     323    { 
     324        GetStackValueVisitor pvv(_lua, -1); 
     325        vo->set(pvv); 
     326        lua_pop(_lua, pvv._numberToPop); 
     327    } 
     328    else 
     329    { 
     330        if (lua_isstring(_lua, -1)) { OSG_NOTICE<<"popParameter() string = "<<lua_tostring(_lua, -1)<<std::endl; } 
     331        else { OSG_NOTICE<<"popParameter() lua_type = "<<lua_type(_lua, -1)<<std::endl; } 
     332        lua_pop(_lua, 1); 
     333    } 
     334 
     335 
     336    return false; 
     337} 
  • OpenSceneGraph/trunk/src/osgPlugins/lua/LuaScriptEngine.h

    r13719 r13799  
    1616 
    1717#include <osg/ScriptEngine> 
     18#include <osgDB/PropertyInterface> 
    1819 
    1920extern "C" { 
     
    3738 
    3839        /** run a Script.*/ 
    39         virtual void run(osg::Script* script); 
     40        virtual bool run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters); 
    4041 
    4142        /** get the lua_State object.*/ 
     
    4849        virtual ~LuaScriptEngine(); 
    4950 
     51        bool loadScript(osg::Script* script); 
     52 
     53        bool pushParameter(osg::Object* object); 
     54        bool popParameter(osg::Object* object); 
     55 
    5056        lua_State* _lua; 
     57 
     58        typedef std::set< osg::ref_ptr<osg::Script> > ScriptSet; 
     59        ScriptSet _loadedScripts; 
     60 
     61        osgDB::PropertyInterface _pi; 
    5162}; 
    5263 
  • OpenSceneGraph/trunk/src/osgPlugins/python/PythonScriptEngine.cpp

    r13719 r13799  
    4242} 
    4343 
    44 void PythonScriptEngine::run(osg::Script* script) 
     44bool PythonScriptEngine::run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters) 
    4545{ 
    46     if (!script || !_py_main) return; 
     46    if (!script || !_py_main) return false; 
    4747 
    4848    PyObject* r = PyRun_String(script->getScript().c_str(), Py_file_input, _py_main, _py_main); 
     
    5656        } 
    5757    } 
     58 
     59    return true; 
    5860} 
  • OpenSceneGraph/trunk/src/osgPlugins/python/PythonScriptEngine.h

    r13719 r13799  
    3333 
    3434        /** run a Script.*/ 
    35         virtual void run(osg::Script* script); 
     35        virtual bool run(osg::Script* script, const std::string& entryPoint, Parameters& inputParameters, Parameters& outputParameters); 
    3636 
    3737        /** get the Python main object.*/ 
  • OpenSceneGraph/trunk/src/osgUtil/CullVisitor.cpp

    r13587 r13799  
    5959 
    6060CullVisitor::CullVisitor(const CullVisitor& rhs): 
    61     Referenced(true), 
    6261    NodeVisitor(rhs), 
    6362    CullStack(rhs),