Я пытаюсь запустить DebugDraw в простом проекте Android JBox2D.
Я просто расширяю DebugDraw таким образом и помещаю некоторый вывод журнала:
public class SimpleDebugView extends DebugDraw
{
private static final String TAG = "SimpleDebugView";
public SimpleDebugView() {
super(new OBBViewportTransform());
}
@Override
public void drawPoint(Vec2 argPoint, float argRadiusOnScreen, Color3f argColor) {
Log.i(TAG, "Draw point");
}
@Override
public void drawSolidPolygon(Vec2[] vertices, int vertexCount, Color3f color) {
Log.i(TAG, "Draw solid polygon");
}
@Override
public void drawCircle(Vec2 center, float radius, Color3f color) {
Log.i(TAG, "Draw circle");
}
@Override
public void drawSolidCircle(Vec2 center, float radius, Vec2 axis, Color3f color) {
Log.i(TAG, "Draw solid circle");
}
@Override
public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) {
Log.i(TAG, "Draw segment");
}
@Override
public void drawTransform(Transform xf) {
Log.i(TAG, "Draw transform");
}
@Override
public void drawString(float x, float y, String s, Color3f color) {
Log.i(TAG, "Draw string");
}
}
Я использую новый класс отладки следующим образом:
[...]
mWorld = new World(gravity);
mWorld.setAllowSleep(true);
SimpleDebugView simpleDebugDraw = new SimpleDebugView();
simpleDebugDraw.setFlags(DebugDraw.e_shapeBit | DebugDraw.e_aabbBit | DebugDraw.e_pairBit | DebugDraw.e_centerOfMassBit | DebugDraw.e_jointBit | DebugDraw.e_dynamicTreeBit);
mWorld.setDebugDraw(simpleDebugDraw);
[...]
После этого я создаю тела и запускаю симуляцию физики.
Моя симуляция работает, я визуализирую свои вещи на основе симуляции на холсте.
Но когда я хочу использовать DebugDraw (поскольку это иногда упрощает отладку моделирования физического мира), это, похоже, не работает. Вывод журнала не отображается, и при отладке точка останова также не попадает в мой SimpleDebugView. Таким образом, кажется, что методы вообще не вызываются. Я неправильно использую DebugDraw?