游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1709|回复: 2

请教一个关于八叉树中物体的遍历问题

[复制链接]

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2007-7-18 14:11:00 | 显示全部楼层 |阅读模式
请教一个问题
有一颗八叉树,里面挂着一些对象,通过调用这些对象的breathe()方法来更新它们的状态,但是由于它们在breathe时可能会改变八叉树的状态,这样如果通过遍历八叉树来更新这些对象的状态,那么可能有的对象的breathe会被调用两次。如果在里面在里面设置一个breathed标志,那么每次遍历breathe之前都要先遍历一下,把所有的标志都清零,这样代价太大;如果不是每次遍历breathe之前清零,而是每个对象每breathe一次就把这个标志+1或者翻转,那么仍然可能有问题:如果一个对象breathe时把另一个尚未breathe的对象移动到了某个已被breathe过的场景节点里,那么这次breathe的结果就是大部分的标志都翻转过了,但是这个对象的没有翻转,这可能导致某些对象很难获得breathe的机会。
我该怎么处理这种情况呢?  [em7]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2007-7-18 15:43:00 | 显示全部楼层

Re:请教一个关于八叉树中物体的遍历问题

对象自己又不能改变八叉树的状态,最多只是发消息给八叉树的管理器,全部update完了之后八叉树再响应消息改变自己的状态。

你的做法就类似一边便利一个容器,一边修改这个容器一样,显然是不对的。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2007-7-18 17:09:00 | 显示全部楼层

Re:请教一个关于八叉树中物体的遍历问题

汗……我已经决定另外再加一个list来专门管理这些对象,通过这个list来遍历对象了……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 19:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表