diff --git a/src/osgPlugins/osg/Node.cpp b/src/osgPlugins/osg/Node.cpp index 65faab193..e5a631905 100644 --- a/src/osgPlugins/osg/Node.cpp +++ b/src/osgPlugins/osg/Node.cpp @@ -113,14 +113,20 @@ bool Node_readLocalData(Object& obj, Input& fr) while (!fr.eof() && fr[0].getNoNestedBrackets()>entry) { NodeCallback* nodecallback = dynamic_cast(fr.readObjectOfType(*s_nodecallback)); - if (nodecallback) node.setUpdateCallback(nodecallback); + if (nodecallback) { + if (node.getUpdateCallback() == NULL) { + node.setUpdateCallback(nodecallback); + } else { + node.getUpdateCallback()->addNestedCallback(nodecallback); + } + } else ++fr; } iteratorAdvanced = true; } - while (fr.matchSequence("CullCallback {")) + while (fr.matchSequence("CullCallbacks {")) { int entry = fr[0].getNoNestedBrackets(); fr += 2; @@ -128,7 +134,13 @@ bool Node_readLocalData(Object& obj, Input& fr) while (!fr.eof() && fr[0].getNoNestedBrackets()>entry) { NodeCallback* nodecallback = dynamic_cast(fr.readObjectOfType(*s_nodecallback)); - if (nodecallback) node.setUpdateCallback(nodecallback); + if (nodecallback) { + if (node.getCullCallback() == NULL) { + node.setCullCallback(nodecallback); + } else { + node.getCullCallback()->addNestedCallback(nodecallback); + } + } else ++fr; } iteratorAdvanced = true;