我一直无法有效地确定大型房间是否封闭在基于体素的3D房间中,因此遇到了一些问题。我正在尽最大努力在不寻求帮助的情况下解决问题,但还没有尽力放弃,所以我在寻求帮助。
为了澄清起见,密封是房间内没有孔。有氧气密封器,用于检查房间是否密封,并根据氧气输入水平进行密封。
现在,这就是我的操作方式:
- 从封口砖上方的块开始(通风口在封口的顶面上),递归遍历所有6个相邻方向
- 如果相邻的图块是完整的非真空图块,请继续执行循环
- 如果相邻的块未满,或者是真空块,则递归检查其相邻块是否存在。
- 每次检查图块时,递减计数器
- 如果计数为零,则最后一个块与真空砖相邻,则返回该区域未密封
- 如果计数为零,并且最后一个块不是真空块,或者递归循环在计数器为零之前结束(没有真空块),则该区域将被密封
如果该区域未被密封,请进行一些更改以再次运行循环:
- 检查相邻块中的“透气”砖块而不是真空砖块
- 代替使用减量计数器,直到发现没有相邻的“透气空气”砖块为止。
- 循环完成后,将每个选中的块设置为真空砖。
这是我正在使用的代码:http : //pastebin.com/NimyKncC
问题:
我每3秒运行一次此检查,有时一个封闭程序必须循环遍历数百个块,并且在一个拥有很多氧气封闭程序的广阔世界中,每隔几秒钟的这些多个递归循环在CPU上可能很难。
我想知道是否有人在优化方面有更多经验可以帮助我,或者至少可以指出正确的方向。谢谢你