我正在使用 box2d 和 cocos2d-x 开发游戏,我想在过度设计之前检查一个细节:TouchDispatcher 调用的回调(如 ccTouchesBegan、ccTouchesEnded、ccTouchesMoved)是否有可能中断 Box2d 世界的执行步?例如,如果我的 ccTouchesEnded 回调是这样的:
void GameLayer::ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::CCEvent* event)
{
world->DestroyBody(myBody);//obviously an oversimplification but you get the idea
}
...是否有可能在世界步骤执行过程中意外调用它,从而删除世界步骤当前正在处理的某些内容?
我查过了...
...而且我已经看到一些可能会干扰,但是在讨论这个问题时唯一出现的是 ContactListener,给我留下的印象是它是一个特殊情况或其他东西。任何回调会干扰吗?还是世界步骤对外部(非box2d)线程是原子的?
PS。我知道给出的示例代码并不完全符合 MVC 设计理念,老实说我正在考虑改变它(尽管考虑到项目所处的状态会导致很多延迟),但即便如此我我仍然想知道更多关于世界步骤的原子性,即使只是为了我自己的参考。
提前致谢