From 91da08b525e33c2c544a9454a442e672c7830a2e Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 14 Nov 2003 13:39:34 +0000 Subject: [PATCH] From Ruben, added support for nested update and cull callbacks. --- src/osgPlugins/osg/Node.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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;