97 lines
1.8 KiB
Plaintext
97 lines
1.8 KiB
Plaintext
class Cube {
|
|
Pos pos;
|
|
Rgb up;
|
|
Rgb down;
|
|
Rgb left;
|
|
Rgb right;
|
|
Rgb front;
|
|
Rgb back;
|
|
|
|
Cube(Pos pos, Rgb up, Rgb down, Rgb left, Rgb right, Rgb front, Rgb back) {
|
|
this.pos = pos;
|
|
this.up = up;
|
|
this.down = down;
|
|
this.left = left;
|
|
this.right = right;
|
|
this.front = front;
|
|
this.back = back;
|
|
}
|
|
|
|
void setColorFace(Rgb col, int face) {
|
|
switch(face) {
|
|
case (0):
|
|
up = col;
|
|
break ;
|
|
case (1):
|
|
down = col;
|
|
break ;
|
|
case (2):
|
|
left = col;
|
|
break ;
|
|
case (3):
|
|
right = col;
|
|
break ;
|
|
case (4):
|
|
front = col;
|
|
break ;
|
|
case (5):
|
|
back = col;
|
|
break ;
|
|
}
|
|
}
|
|
|
|
Rgb getColorFace(int face) {
|
|
switch(face) {
|
|
case (0):
|
|
return up;
|
|
case (1):
|
|
return down;
|
|
case (2):
|
|
return left;
|
|
case (3):
|
|
return right;
|
|
case (4):
|
|
return front;
|
|
case (5):
|
|
return back;
|
|
}
|
|
return up;
|
|
}
|
|
|
|
void drawbox(Rgb up, Rgb down, Rgb left, Rgb right, Rgb front, Rgb back) {
|
|
fill(up.r, up.g, up.b);
|
|
rect(0, 0, 100, 100);
|
|
|
|
fill(back.r, back.g, back.b);
|
|
rotateX(PI/2);
|
|
rect(0, 0, 100, 100);
|
|
|
|
fill(right.r, right.g, right.b);
|
|
rotateY(PI/2);
|
|
rect(0, 0, 100, 100);
|
|
|
|
fill(left.r, left.g, left.b);
|
|
translate(0, 0, 100);
|
|
rect(0, 0, 100, 100);
|
|
|
|
fill(down.r, down.g, down.b);
|
|
translate(0,100,-100);
|
|
rotateX(PI/2);
|
|
rect(0, 0, 100, 100);
|
|
|
|
rotateY(PI/2);
|
|
translate(-100, 0, 100);
|
|
fill(front.r, front.g, front.b);
|
|
rect(0, 0, 100, 100);
|
|
|
|
rotateX(PI/2);
|
|
rotateY(PI/2);
|
|
translate(0, -100, 0);
|
|
}
|
|
|
|
void draw() {
|
|
translate(pos.x, pos.y, pos.z);
|
|
this.drawbox(this.up, this.down, this.left, this.right, this.front, this.back);
|
|
}
|
|
}
|