gpt4 book ai didi

javascript - 你如何在 emscripten 中迭代来自 Box2D 的物体列表?

转载 作者:行者123 更新时间:2023-11-29 19:43:15 25 4
gpt4 key购买 nike

我从这里使用 Box2D 的 emscripten 端口:https://github.com/kripken/box2d.js

它运行良好,但我在与 emscripten 交互时遇到了一些问题。

具体来说,我在这样的循环中执行模型显示同步:

function step() {
world.Step(1/60);
var body = this.world.GetBodyList();
while(body != null) {
readGeometry(body, body.data);
body = body.GetNext();
}
}

...但这似乎不起作用。尽管 C++ 代码在 body 对象的链表末尾返回 NULL,但 body.GetNext()(cpp 中的返回类型为 b2Body *)永远不是原生的 javascript null。

我也试过:

body != Box2D.NULL

然而,这也不是真的。我猜 emscripten 正在返回一个包装指针,我必须对它做一些特定的操作来测试“空性”。

检查返回的对象,我可以看到其中的空值“指针”值为零,并且我可以使其与以下对象一起使用:

function step() {
world.Step(1/60);
var body = this.world.GetBodyList();
while(body.a != 0) { // <--------------- This hack
readGeometry(body, body.data);
body = body.GetNext();
}
}

因此,显然可以测试 NULL-ness,但我找不到任何关于如何进行测试的文档。

最佳答案

试试这个

function step() {
world.Step(1/60);
var body = this.world.GetBodyList();
while(Box2D.getPointer(body)) { // <-- will equal 0 for a Box2D.NULL object
readGeometry(body, body.data);
body = body.GetNext();
}
}

我知道这个问题真的很老,但我最近遇到了这个问题并在 github 上找到了解决方案.

关于javascript - 你如何在 emscripten 中迭代来自 Box2D 的物体列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com