class Star { float x; float y; float z; float pz; int c; Star() { x = random(-width, width); y = random(-height, height * 2); z = random(width); pz = z; c = int(random(20)); } void update() { z -= tg_starfield_speed; if (z < 1) { z = width; x = random(-width / 2, width / 2); y = random(-height / 2, height / 2); pz = z; } } void render() { if (c == 0) fill(255,210,125); if (c == 1) fill(255,163,113); if (c == 2) fill(166,168,255); if (c == 3) fill(255,250,134); if (c == 4) fill(168,123,255); if (c > 4) fill(255, 255, 255); noStroke(); pushMatrix(); translate(width / 2, height / 2, -1000); float sx = map(x / z, 0, 1, 0, width); float sy = map(y / z, 0, 1, 0, height); float r = map(z, 0, width, 16, 0); float px = map(x / pz, 0, 1, 0, width); float py = map(y / pz, 0, 1, 0, height); ellipse(sx, sy, r, r); if (c == 0) stroke(255,210,125); if (c == 1) stroke(255,163,113); if (c == 2) stroke(166,168,255); if (c == 3) stroke(255,250,134); if (c == 4) stroke(168,123,255); if (c > 4) stroke(255, 255, 255); strokeWeight(1); beginShape(); vertex(sx, sy - r / 4); vertex(sx + r * 1.5, sy); vertex(sx, sy + r / 4); endShape(); beginShape(); vertex(sx, sy - r / 4); vertex(sx - r * 1.5, sy); vertex(sx, sy + r / 4); endShape(); beginShape(); vertex(sx - r / 4, sy); vertex(sx, sy + r * 1.5); vertex(sx + r / 4, sy); endShape(); beginShape(); vertex(sx - r / 4, sy); vertex(sx, sy - r * 1.5); vertex(sx + r / 4, sy); endShape(); strokeWeight(r / 2); line(px, py, sx, sy); popMatrix(); pz = z; } }