Я интегрирую версию Javascript Box2d или plank.js со своей собственной библиотекой (пространственная координата).У меня есть список / массив, который постоянно меняет каждый цикл перед вызовом world.step .(Причина, по которой мне нужно ограничить то, что обновляется в world.step, заключается в том, что мир должен быть бесконечным)
Я пытался передать этот массив тел в функции world.step , но для этого нет точки входа.
Я также думал о попытке изменить некоторую переменную, такую как this.m_bodyList или b.getNext (), но я не думаю, что они будут работать.
Я даже думал о добавлении тел, затем вызове world.step, а затем об удалении этих тел.
Функция world.step выглядит следующим образом:
World.prototype.step = function(timeStep, velocityIterations, positionIterations) {
if ((velocityIterations | 0) !== velocityIterations) {
// TODO: remove this in future
velocityIterations = 0;
}
velocityIterations = velocityIterations || this.m_velocityIterations;
positionIterations = positionIterations || this.m_positionIterations;
// TODO: move this to testbed
this.m_stepCount++;
// If new fixtures were added, we need to find the new contacts.
if (this.m_newFixture) {
this.findNewContacts();
this.m_newFixture = false;
}
this.m_locked = true;
s_step.reset(timeStep);
s_step.velocityIterations = velocityIterations;
s_step.positionIterations = positionIterations;
s_step.warmStarting = this.m_warmStarting;
s_step.blockSolve = this.m_blockSolve;
// Update contacts. This is where some contacts are destroyed.
this.updateContacts();
// Integrate velocities, solve velocity constraints, and integrate positions.
if (this.m_stepComplete && timeStep > 0) {
this.m_solver.solveWorld(s_step);
// Synchronize fixtures, check for out of range bodies.
for (var b = this.m_bodyList; b; b = b.getNext()) {
// If a body was not in an island then it did not move.
if (b.m_islandFlag == false) {
continue;
}
if (b.isStatic()) {
continue;
}
// Update fixtures (for broad-phase).
b.synchronizeFixtures();
}
// Look for new contacts.
this.findNewContacts();
}
// Handle TOI events.
if (this.m_continuousPhysics && timeStep > 0) {
this.m_solver.solveWorldTOI(s_step);
}
if (this.m_clearForces) {
this.clearForces();
}
this.m_locked = false;
};
Мне просто нужен world.step только для обработки тел / столкновений в текущем списке тел, который может видеть камера в моей библиотеке.
РЕДАКТИРОВАТЬ:
Есть ли способЯ могу сделать пользовательскую функцию, которая обновляет только одно тело?