-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBox2dP5DebugDraw.java
More file actions
107 lines (85 loc) · 3.12 KB
/
Box2dP5DebugDraw.java
File metadata and controls
107 lines (85 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import org.jbox2d.callbacks.DebugDraw;
import org.jbox2d.common.Color3f;
import org.jbox2d.common.Transform;
import org.jbox2d.common.Vec2;
import org.jbox2d.particle.ParticleColor;
import processing.core.PConstants;
import processing.core.PGraphics;
import shiffman.box2d.Box2DProcessing;
/**
* Created by doekewartena on 6/30/15.
*/
public class Box2dP5DebugDraw extends DebugDraw {
Box2DProcessing box2d;
PGraphics g;
public Box2dP5DebugDraw(Box2DProcessing box2d, PGraphics g) {
this.box2d = box2d;
this.g = g;
}
@Override
public void drawPoint(Vec2 argPoint, float argRadiusOnScreen, Color3f argColor) {
System.out.println("drawPoint");
}
@Override
public void drawSolidPolygon(Vec2[] vertices, int vertexCount, Color3f color) {
g.noStroke();
g.fill(color.x, color.y, color.z);
g.beginShape();
for (int i = 0; i < vertexCount; i++) {
Vec2 pixelVec = box2d.coordWorldToPixels(vertices[i]);
g.vertex(pixelVec.x, pixelVec.y);
}
g.endShape();
}
@Override
public void drawCircle(Vec2 center, float radius, Color3f color) {
center = box2d.coordWorldToPixels(center);
radius = box2d.scalarWorldToPixels(radius);
g.ellipseMode(PConstants.CENTER);
g.stroke(color.x, color.y, color.z);
g.noFill();
g.ellipse(center.x, center.y, radius * 2, radius * 2);
}
@Override
public void drawSolidCircle(Vec2 center, float radius, Vec2 axis, Color3f color) {
center = box2d.coordWorldToPixels(center);
radius = box2d.scalarWorldToPixels(radius);
g.ellipseMode(PConstants.CENTER);
g.fill(color.x, color.y, color.z);
g.noStroke();
g.ellipse(center.x, center.y, radius * 2, radius * 2);
}
@Override
public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) {
// System.out.println();
// System.out.println("drawSegment");
// System.out.println(p1.x+" "+p1.y);
// System.out.println(p2.x+" "+p2.y);
// System.out.println(color.x+" "+color.y+" "+color.z);
// System.out.println();
Vec2 v1 = box2d.coordWorldToPixels(p1);
Vec2 v2 = box2d.coordWorldToPixels(p2);
g.stroke(color.x, color.y, color.z);
g.line(v1.x, v1.y, v2.x, v2.y);
}
@Override
public void drawTransform(Transform transform) {
System.out.println("drawTransform");
// we can push a matrix but when do we need to pop?
// we would need to count the pushes
// Vec2 p = box2d.coordWorldToPixels(transform.p);
// System.out.println("p.x: "+p.x+" p.y: "+p.y);
}
@Override
public void drawString(float x, float y, String s, Color3f color) {
System.out.println("drawString");
}
@Override
public void drawParticles(Vec2[] centers, float radius, ParticleColor[] colors, int count) {
System.out.println("drawParticles");
}
@Override
public void drawParticlesWireframe(Vec2[] centers, float radius, ParticleColor[] colors, int count) {
System.out.println("drawParticlesWireframe");
}
}