节点的删除 - 同时删除所有绑定在节点上的对象
来源:互联网 发布:达内大数据百度云盘 编辑:程序博客网 时间:2024/05/22 05:01
1.关于节点的删除:
1.分析:
0.SceneManager从节点列表中删除节点
1.要从父节点中删除该节点.
2.基于Ogre设计的设计.SceneNode没有提供销毁movableObject对象的函数.但是有解绑与遍历movable的能力.此问题简单为解绑movable
3.节点上一般都拥有一系列的MovableObject对象.绑定在其上的MovableObject也应该被销毁.
4.SceneNode上还可以有ChildSceneNode.因此.这些ChildSceneNode也应当被销毁
5.内存的释放
2.解析Ogre提供的功能:
1.SceneManager::destroySceneNode:
1.从父节点清除该节点.不再对其更新. -- 解决了问题1
2.delete 该节点. -- 解决了问题5 -- 由于在析构函数里对所有object进行了解绑.所以同时也解决了问题2
3.从节点列表中移除该节点 -- 解决问题0
2.SceneNode::detachAllObjects:
1.对所有movableObject解除绑定 -- 解决问题2
3.SceneNode::getAttachedObjectIterator:
1.获得movableObject的迭代器 -- 可以用来解决问题3
4.SceneNode::removeAndDestroyAllChildren:
1.调用SceneManager对每个子节点进行删除.可解决该子节点的问题0,1,5.但此函数没什么用.
5.SceneManager::destroyMovableObject:
1.进行所有类型的movableObject的删除.解决问题3
// SceneManager::destroyEntity:destroyCamera...等等
// 1.不能解决所有movableObject的删除.
3.综上.
1.对绑定在节点上的movableObject的删除与所有子节点的删除是主要问题.
2.对每个节点:
1.遍历所有子节点.对子节点进行删除(每个节点都是相同的处理.)
2.遍历并删除所有movableObject对象 -- 解决问题3
3.SceneManager::destroySceneNode -- 解决问题0,1,2,5
4.实现:
// 从vim复制过来...代码变形...
void SceneManager::DestroySceneNode( Ogre::SceneManager* pSceneManager, Ogre::SceneNode *pSceneNode )
{
// 遍历并删除所有movableObject对象
Ogre::SceneNode::ObjectIterator iterMovableObject = pSceneNode->getAttachedObjectIterator();
while ( iterMovableObject.hasMoreElements() )
{
// 不清楚没把movableObject从节点解绑.删除节点会不会有问题。应该不会才对...
pSceneManager->destroyMovableObject( iterMovableObject.getNext() );
}
// 遍历删除子节点
Ogre::SceneNode::ChildNodeIterator iterChild = pSceneNode->getChildIterator();
while ( iterChild.hasMoreElements() )
{
DestroySceneNode( pSceneManager, (Ogre::SceneNode*)iterChild.getNext() );
}
// SceneManager::destroySceneNode -- 解决问题0,1,2,5
pSceneManager->destroySceneNode( pSceneNode );
}
- 节点的删除 - 同时删除所有绑定在节点上的对象
- 节点的删除 - 同时删除所有绑定要节点上的对象
- 删除父节点同时删除该节点上的所有子节点(oracle)
- 删除树节点下的所有节点
- 同步删除被删除节点的所有子节点(BOM节点删除)
- JavaScript删除所有子节点的方法
- 删除父节点下的所有子节点
- 删除父节点下的所有子节点
- 在带头节点的单链表中,删除所有值为x的节点(Java实现)
- 链表内的节点删除
- RAC的节点删除
- 节点的删除
- 单链表节点的删除
- 红黑树 节点的删除
- DOM节点的删除
- 在单链表中删除指定值的节点
- 在单链表中删除指定值的节点
- 递归删除一个节点以及该节点下的所有节点
- AS3 Vector2D 详细类
- ASIHTTP 代码品
- 模拟京东网上商城--商品浏览历史
- 2012,3,26
- 英中日三版本windowsXP[公司用]
- 节点的删除 - 同时删除所有绑定在节点上的对象
- 2012软件行业就业分析及如何准备面试应聘
- N后问题递归解 套了师兄的公式
- 注册表操作注意问题
- Linux驱动的platform机制
- 标准灰板的意义
- iPhone获取当前位置(CoreLocation的一些简单使用)
- Java集合对象排序
- 恶劣产品充满安防市场 相同产品现象更严重