Changeset 10362
- Timestamp:
- 06/18/09 12:01:39 (4 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 3 modified
-
include/osg/CopyOp (modified) (3 diffs)
-
src/osg/CopyOp.cpp (modified) (1 diff)
-
src/osg/Node.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osg/CopyOp
r9407 r10362 31 31 class PrimitiveSet; 32 32 class Shape; 33 class NodeCallback; 33 34 34 35 /** Copy Op(erator) used to control whether shallow or deep copy is used … … 53 54 DEEP_COPY_SHAPES = 1<<9, 54 55 DEEP_COPY_UNIFORMS = 1<<10, 56 DEEP_COPY_NODECALLBACKS = 1<<11, 55 57 DEEP_COPY_ALL = 0x7FFFFFFF 56 58 }; … … 73 75 virtual Shape* operator() (const Shape* shape) const; 74 76 virtual Uniform* operator() (const Uniform* shape) const; 77 virtual NodeCallback* operator() (const NodeCallback* nodecallback) const; 75 78 76 79 protected: -
OpenSceneGraph/trunk/src/osg/CopyOp.cpp
r6459 r10362 66 66 67 67 68 NodeCallback* CopyOp::operator() (const NodeCallback* nc) const 69 { 70 if (nc && _flags&DEEP_COPY_NODECALLBACKS) 71 { 72 // deep copy the full chain of callback 73 osg::NodeCallback* first = dynamic_cast<osg::NodeCallback*>(nc->clone(*this)); 74 first->setNestedCallback(0); 75 nc = nc->getNestedCallback(); 76 while (nc) 77 { 78 osg::NodeCallback* ucb = dynamic_cast<osg::NodeCallback*>(nc->clone(*this)); 79 ucb->setNestedCallback(0); 80 first->addNestedCallback(ucb); 81 nc = nc->getNestedCallback(); 82 } 83 return first; 84 } 85 else 86 return const_cast<NodeCallback*>(nc); 87 } -
OpenSceneGraph/trunk/src/osg/Node.cpp
r9897 r10362 75 75 _boundingSphereComputed(node._boundingSphereComputed), 76 76 _parents(), // leave empty as parentList is managed by Group. 77 _updateCallback( node._updateCallback),77 _updateCallback(copyop(node._updateCallback.get())), 78 78 _numChildrenRequiringUpdateTraversal(0), // assume no children yet. 79 79 _numChildrenRequiringEventTraversal(0), // assume no children yet. 80 _cullCallback( node._cullCallback),80 _cullCallback(copyop(node._cullCallback.get())), 81 81 _cullingActive(node._cullingActive), 82 82 _numChildrenWithCullingDisabled(0), // assume no children yet.
