-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEntities.pde
66 lines (51 loc) · 1.54 KB
/
Entities.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
public class Entity {
private Image image;
private PVector pos;
private PVector draggedPos;
private PVector mouseDownPos;
private boolean dragging = false;
public Entity(Image image) {
this.image = image;
this.pos = new PVector();
this.draggedPos = new PVector();
}
public void display(float x, float y) {
image.setPos(x + draggedPos.x + pos.x * zoom, y + draggedPos.y + pos.y * zoom);
image.display();
}
public void setDraggedPos(PVector pos) {
this.draggedPos = pos;
}
public void updatePos() {
pos.add(draggedPos.x / zoom, draggedPos.y / zoom);
draggedPos.set(0, 0);
}
public void resetPos() {
pos.set(0, 0);
}
public void rotate(boolean right) {
float x = pos.x;
float y = pos.y;
// Why is ternary throwing a compiler error?
// right ? pos.set(-y, x) : pos.set(y, -x);
if (right) pos.set(-y, x); else pos.set(y, -x);
}
/* Mouse functions */
public final boolean mousePressed() {
boolean hovering = image.isHovering();
if (hovering) {
mouseDownPos = new PVector(mouseX, mouseY);
dragging = true;
}
return hovering;
}
public void mouseDragged() {
if (dragging) {
PVector draggedPos = new PVector(mouseX - mouseDownPos.x, mouseY - mouseDownPos.y);
setDraggedPos(draggedPos);
}
}
public final void mouseReleased() {
updatePos();
}
}