veloren/world/examples/turb.rs

43 lines
1.1 KiB
Rust
Raw Normal View History

2019-06-26 00:27:41 +00:00
use noise::{NoiseFn, Seedable, SuperSimplex};
use rand::thread_rng;
2019-06-25 15:59:09 +00:00
use std::ops::{Add, Mul, Sub};
use vek::*;
use veloren_world::sim::Settlement;
const W: usize = 640;
const H: usize = 640;
fn main() {
2019-06-26 00:27:41 +00:00
let mut win = minifb::Window::new("Turb", W, H, minifb::WindowOptions::default()).unwrap();
2019-06-25 15:59:09 +00:00
let nz_x = SuperSimplex::new().set_seed(0);
let nz_y = SuperSimplex::new().set_seed(1);
let mut time = 0.0f64;
while win.is_open() {
let mut buf = vec![0; W * H];
for i in 0..W {
for j in 0..H {
let pos = Vec2::new(i as f64 / W as f64, j as f64 / H as f64) * 0.5 - 0.25;
let pos = pos * 10.0;
2019-06-26 00:27:41 +00:00
let pos = (0..10).fold(pos, |pos, _| pos.map(|e| e.powf(3.0) - 1.0));
2019-06-25 15:59:09 +00:00
2019-06-26 00:27:41 +00:00
let val = if pos.map(|e| e.abs() < 0.5).reduce_and() {
2019-06-25 15:59:09 +00:00
1.0f32
} else {
0.0
};
buf[j * W + i] = u32::from_le_bytes([(val.max(0.0).min(1.0) * 255.0) as u8; 4]);
}
}
win.update_with_buffer(&buf).unwrap();
time += 1.0 / 60.0;
}
}