-
Notifications
You must be signed in to change notification settings - Fork 0
/
Particle.pde
74 lines (62 loc) · 1.21 KB
/
Particle.pde
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
class Particle
{
Body body;
float x;
float y;
float r;
color col=color(175);
Particle(float x_,float y_,float r_)
{
x=x_;
y=y_;
r=r_;
BodyDef bd=new BodyDef();
bd.type=BodyType.DYNAMIC;
bd.position=box2d.coordPixelsToWorld(x,y);
body=box2d.createBody(bd);
CircleShape cs=new CircleShape();
cs.m_radius=box2d.scalarPixelsToWorld(r);
FixtureDef fd=new FixtureDef();
fd.shape=cs;
fd.density = 1;
fd.friction = 0.01;
fd.restitution = 0.3;
body.createFixture(fd);
body.setAngularVelocity(random(-10,10));
body.setUserData(this);
}
void display()
{
Vec2 pos=box2d.getBodyPixelCoord(body);
float a=body.getAngle();
pushMatrix();
translate(pos.x,pos.y);
rotate(-a);
fill(col);
stroke(0);
strokeWeight(1);
ellipse(0,0,r*2,r*2);
line(0,0,r,0);
popMatrix();
}
void killBody()
{
box2d.destroyBody(body);
}
boolean done()
{
Vec2 pos=box2d.getBodyPixelCoord(body);
if(pos.y>height+r*2)
{
killBody();
return true;
}
return false;
}
void change() {
col = color(255, 0, 0);
}
void changecol() {
col = color(0,255, 0);
}
}