|
osg::Group* g=dynamic_cast<osg::Group*>(node->clone(osg::CopyOp:EEP_COPY_ALL));
我写了一个继承自MatrixTransform的节点OsgTransformPoints,可以对该节点的子节点进行拖动。
使用DEEP_COPY_ALL复制该节点,替换被复制节点,虽然数据都复制出来了,而且屏幕上也显示了,
但为什么不能拖动了。
使用SHALLOW_COPY复制该节点,替换被复制节点,却可以继续拖动。请这是为什么?
另外问一下,以下复制方式都有那些区别,何种情况下调用?
期待各位解答一下,谢谢了!
enum Options
{
SHALLOW_COPY = 0,
DEEP_COPY_OBJECTS = 1<<0,
DEEP_COPY_NODES = 1<<1,
DEEP_COPY_DRAWABLES = 1<<2,
DEEP_COPY_STATESETS = 1<<3,
DEEP_COPY_STATEATTRIBUTES = 1<<4,
DEEP_COPY_TEXTURES = 1<<5,
DEEP_COPY_IMAGES = 1<<6,
DEEP_COPY_ARRAYS = 1<<7,
DEEP_COPY_PRIMITIVES = 1<<8,
DEEP_COPY_SHAPES = 1<<9,
DEEP_COPY_ALL = 0x7FFFFFFF
};
下面是我写的三个相关类 |
|