私は 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 の設計哲学に完全に準拠していないことは理解しています。正直なところ、それを変更することを検討しています (ただし、プロジェクトの状態を考えると、多くの遅延が発生します)。私自身の参考のためだけでも、ワールドステップがどれほど原子的であるかについてもっと知りたい.
前もって感謝します