// Copyright (C) 2002-2003 Gideon May (gideon@computer.org) // // Permission to copy, use, sell and distribute this software is granted // provided this copyright notice appears in all copies. // Permission to modify the code and to distribute modified code is granted // provided this copyright notice appears in all copies, and a notice // that the code was modified is included with the copyright notice. // // This software is provided "as is" without express or implied warranty, // and with no claim as to its suitability for any purpose. #include "osgScript/PythonScript" #include #include #include #include #include using namespace osg; using namespace osgDB; using namespace osgScript; // forward declare functions to use later. bool PythonScript_readLocalData(Object& obj, Input& fr); bool PythonScript_writeLocalData(const Object& obj, Output& fw); osgDB::RegisterDotOsgWrapperProxy PythonScript_Proxy ( new PythonScript, "PythonScript", "Object Node Group Script PythonScript", &PythonScript_readLocalData, &PythonScript_writeLocalData ); bool PythonScript_readLocalData(Object& obj, Input& fr) { bool iteratorAdvanced = false; PythonScript& script = static_cast(obj); if (fr.matchSequence("updateFunc %s")) { script.setUpdateFunc(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("postUpdateFunc %s")) { script.setPostUpdateFunc(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("cullFunc %s")) { script.setCullFunc(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("postCullFunc %s")) { script.setPostCullFunc(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("initFunc %s")) { script.setInitFunc(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("inlineCode %s")) { script.setInlineCode(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } else if (fr.matchSequence("externCode %s")) { script.setExternCode(fr[1].getStr()); fr += 2; iteratorAdvanced = true; } return iteratorAdvanced; } bool PythonScript_writeLocalData(const Object& obj, Output& fw) { const PythonScript& script = static_cast(obj); std::cerr << "PythonScript_writeLocalData\n"; if (!script.getUpdateFunc().empty()) fw.indent() << "updateFunc \"" << script.getUpdateFunc() << "\"" << std::endl; if (!script.getPostUpdateFunc().empty()) fw.indent() << "postUpdateFunc \"" << script.getPostUpdateFunc() << "\"" << std::endl; if (!script.getCullFunc().empty()) fw.indent() << "cullFunc \"" << script.getCullFunc() << "\"" << std::endl; if (!script.getPostCullFunc().empty()) fw.indent() << "postCullFunc \"" << script.getPostCullFunc() << "\"" << std::endl; if (!script.getInitFunc().empty()) fw.indent() << "initFunc \"" << script.getInitFunc() << "\"" << std::endl; if (!script.getInlineCode().empty()) fw.indent() << "inlineCode \"" << fw.wrapString(script.getInlineCode()) << "\"" << std::endl; if (!script.getExternCode().empty()) fw.indent() << "externCode \"" << script.getExternCode() << "\"" << std::endl; return true; }