static { Core.update.forEach( dt -> { Iterator<Particle> it = ALL.iterator(); while (it.hasNext()) { Particle p = it.next(); p.vel = p.vel.add(p.gra.multiply(dt)); p.pos = p.pos.add(p.vel.multiply(dt)); p.lifeTime -= dt; if (p.lifeTime < 0 || CubeMap.isSolid(p.pos)) { it.remove(); } } }); Sprite s = new Sprite("ball"); Core.render.onEvent( () -> { ALL.forEach( p -> { s.scale = new Vec2(p.size); s.color = p.color; Vec3 towardsSprite = p.pos.subtract(Window3D.pos); s.draw( p.pos.subtract(towardsSprite.cross(Window3D.UP).withLength(-s.scale.x / 2)), -towardsSprite.direction2() + Math.PI / 2, towardsSprite.direction() + Math.PI / 2); }); }); }