got keyboard input working by using a static buffer (hack)
todo: remove code bloat
This commit is contained in:
parent
b56934f0a5
commit
92f801df31
5 changed files with 273 additions and 18 deletions
|
@ -5,7 +5,7 @@
|
||||||
</script>
|
</script>
|
||||||
<link rel="stylesheet" href="style.css">
|
<link rel="stylesheet" href="style.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body id="body">
|
||||||
<canvas id="window"></canvas>
|
<canvas id="window"></canvas>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
var ctx;
|
var ctx;
|
||||||
var image;
|
var image;
|
||||||
var memory;
|
var memory;
|
||||||
|
var exports;
|
||||||
const width = 160;
|
const width = 160;
|
||||||
const height = 144;
|
const height = 144;
|
||||||
|
|
||||||
|
@ -15,6 +16,18 @@ function blit_text(text, len, x, y, size) {
|
||||||
ctx.fillText(decoded,x,y);
|
ctx.fillText(decoded,x,y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function keyboard_callback(e) {
|
||||||
|
const keycode_address = exports.KEYCODE.value;
|
||||||
|
const value = new Uint8ClampedArray(exports.memory.buffer, keycode_address, 2);
|
||||||
|
|
||||||
|
value[0] = e.keyCode;
|
||||||
|
console.log("thing" + value[0]);
|
||||||
|
console.log(keycode_address);
|
||||||
|
console.log(value[0]);
|
||||||
|
|
||||||
|
exports.keyboard_input();
|
||||||
|
}
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
const canvas = document.getElementById("window");
|
const canvas = document.getElementById("window");
|
||||||
canvas.width = width;
|
canvas.width = width;
|
||||||
|
@ -33,6 +46,9 @@ async function init() {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
exports = instance.exports;
|
||||||
|
document.getElementById("body").onkeydown=keyboard_callback;
|
||||||
|
|
||||||
memory = instance.exports.memory
|
memory = instance.exports.memory
|
||||||
const buffer_address = instance.exports.BUFFER.value;
|
const buffer_address = instance.exports.BUFFER.value;
|
||||||
image = new ImageData(
|
image = new ImageData(
|
||||||
|
@ -48,16 +64,11 @@ async function init() {
|
||||||
ctx.textBaseline = 'top'
|
ctx.textBaseline = 'top'
|
||||||
ctx.textAlign = 'left';
|
ctx.textAlign = 'left';
|
||||||
|
|
||||||
var frame = 1;
|
|
||||||
const render = () => {
|
const render = () => {
|
||||||
frame += 1;
|
|
||||||
console.log(frame);
|
|
||||||
instance.exports.frame_entry();
|
instance.exports.frame_entry();
|
||||||
|
|
||||||
requestAnimationFrame(render);
|
requestAnimationFrame(render);
|
||||||
}
|
}
|
||||||
canvas.onclick = render;
|
|
||||||
|
|
||||||
render();
|
render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
180
pirates/Cargo.lock
generated
180
pirates/Cargo.lock
generated
|
@ -2,6 +2,12 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.75"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "approx"
|
name = "approx"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
|
@ -11,18 +17,81 @@ dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "arraydeque"
|
||||||
|
version = "0.4.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0ffd3d69bd89910509a5d31d1f1353f38ccffdd116dd0099bbd6627f7bd8ad8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "arrayvec"
|
||||||
|
version = "0.4.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
|
||||||
|
dependencies = [
|
||||||
|
"nodrop",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "0.1.10"
|
version = "0.1.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-segmentation",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "keycode"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b07873c3182aec8a0eb1a5a4e7b197d42e9d167ba78497a6ee932a82d94673ed"
|
||||||
|
dependencies = [
|
||||||
|
"arraydeque",
|
||||||
|
"arrayvec",
|
||||||
|
"bitflags",
|
||||||
|
"keycode_macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "keycode_macro"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e521ea802f5b3c7194e169d75cab431b0ff08d022f2b6047b08754b4988b89df"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"heck",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
dependencies = [
|
||||||
|
"spin 0.5.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.147"
|
version = "0.2.147"
|
||||||
|
@ -35,6 +104,16 @@ version = "0.2.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
|
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lock_api"
|
||||||
|
version = "0.4.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"scopeguard",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memory_units"
|
name = "memory_units"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
@ -55,6 +134,12 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nodrop"
|
||||||
|
version = "0.1.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-complex"
|
name = "num-complex"
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
|
@ -101,15 +186,63 @@ version = "1.0.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
|
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pin-project"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
|
||||||
|
dependencies = [
|
||||||
|
"pin-project-internal",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pin-project-internal"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pirates"
|
name = "pirates"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"keycode",
|
||||||
|
"lazy_static",
|
||||||
"libm",
|
"libm",
|
||||||
"nalgebra",
|
"nalgebra",
|
||||||
|
"spin 0.9.8",
|
||||||
|
"thingbuf",
|
||||||
"wee_alloc",
|
"wee_alloc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.66"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.33"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "simba"
|
name = "simba"
|
||||||
version = "0.8.1"
|
version = "0.8.1"
|
||||||
|
@ -122,12 +255,59 @@ dependencies = [
|
||||||
"paste",
|
"paste",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.9.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||||
|
dependencies = [
|
||||||
|
"lock_api",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thingbuf"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4706f1bfb859af03f099ada2de3cea3e515843c2d3e93b7893f16d94a37f9415"
|
||||||
|
dependencies = [
|
||||||
|
"pin-project",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typenum"
|
name = "typenum"
|
||||||
version = "1.16.0"
|
version = "1.16.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-segmentation"
|
||||||
|
version = "1.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wee_alloc"
|
name = "wee_alloc"
|
||||||
version = "0.4.5"
|
version = "0.4.5"
|
||||||
|
|
|
@ -11,10 +11,21 @@ opt-level = 's'
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
keycode = "0.4.0"
|
||||||
libm = "0.2.7"
|
libm = "0.2.7"
|
||||||
|
spin = "0.9.8"
|
||||||
wee_alloc = "0.4.5"
|
wee_alloc = "0.4.5"
|
||||||
|
|
||||||
[dependencies.nalgebra]
|
[dependencies.nalgebra]
|
||||||
version = "0.32.3"
|
version = "0.32.3"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["libm"]
|
features = ["libm"]
|
||||||
|
|
||||||
|
[dependencies.thingbuf]
|
||||||
|
version = "0.1.4"
|
||||||
|
default-features = false
|
||||||
|
features = ["static"]
|
||||||
|
|
||||||
|
[dependencies.lazy_static]
|
||||||
|
version = "1.4.0"
|
||||||
|
features = ["spin_no_std"]
|
||||||
|
|
|
@ -9,10 +9,15 @@ extern crate wee_alloc;
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
|
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
|
||||||
|
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use noise::PerlinBuf;
|
||||||
use core::sync::atomic::{AtomicU32, Ordering};
|
use core::sync::atomic::{AtomicU32, Ordering};
|
||||||
use libm::{self, Libm};
|
use libm::{self, Libm};
|
||||||
extern crate nalgebra as na;
|
extern crate nalgebra as na;
|
||||||
use nalgebra::{Vector2};
|
use nalgebra::{Vector2};
|
||||||
|
use thingbuf::mpsc::{self, errors::TryRecvError};
|
||||||
|
use spin::Mutex;
|
||||||
|
use keycode::KeyMap;
|
||||||
|
|
||||||
mod sampler;
|
mod sampler;
|
||||||
mod noise;
|
mod noise;
|
||||||
|
@ -37,6 +42,12 @@ const HEIGHT: usize = 144;
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
static mut BUFFER: [u32; WIDTH * HEIGHT] = [0; WIDTH * HEIGHT];
|
static mut BUFFER: [u32; WIDTH * HEIGHT] = [0; WIDTH * HEIGHT];
|
||||||
|
|
||||||
|
// hack, js -> rust ffi in weird shape without wasm_bindgen
|
||||||
|
#[no_mangle]
|
||||||
|
static mut KEYCODE: [u8; 2] = [0; 2];
|
||||||
|
|
||||||
|
static LAST_KEY: Mutex<Option<[u32; 2]>> = Mutex::new(None);
|
||||||
|
|
||||||
static FRAME: AtomicU32 = AtomicU32::new(0);
|
static FRAME: AtomicU32 = AtomicU32::new(0);
|
||||||
|
|
||||||
static mut RAND: noise::PerlinBuf = [0; 512];
|
static mut RAND: noise::PerlinBuf = [0; 512];
|
||||||
|
@ -56,6 +67,14 @@ static MAP: [u8; MAP_WIDTH * MAP_HEIGHT] = [ // should deflate to smaller than b
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,
|
1,1,1,1,1,1,1,1,1,1,1,1,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
static CAMERA: Mutex<[f32; 3]> = Mutex::new([0.0, 0.0, 4.0]);
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern fn keyboard_input() {
|
||||||
|
let keycode = KEYCODE[0];
|
||||||
|
LAST_KEY.lock().insert([keycode as u32, 0]);
|
||||||
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern fn frame_entry() {
|
pub unsafe extern fn frame_entry() {
|
||||||
// calling from multiple threads is ub
|
// calling from multiple threads is ub
|
||||||
|
@ -74,20 +93,32 @@ fn render_frame(buffer: &mut [u32; WIDTH*HEIGHT]) {
|
||||||
RAND
|
RAND
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let mut camera = CAMERA.lock();
|
||||||
|
|
||||||
|
//camera[0] += 1.0;
|
||||||
|
|
||||||
|
if let Some(key) = LAST_KEY.lock().take() {
|
||||||
|
match key[0] {
|
||||||
|
38 => camera[1] -= 10.0, // up
|
||||||
|
40 => camera[1] += 10.0, // down
|
||||||
|
37 => camera[0] -= 10.0, // left
|
||||||
|
39 => camera[0] += 10.0, // right
|
||||||
|
61 => camera[2] *= 0.9, // +
|
||||||
|
173 => camera[2] *= 1.1, // -
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let camera_vec = Vector2::new(camera[0],camera[1]);
|
||||||
|
|
||||||
|
const half: Vector2<f32> = Vector2::new(WIDTH as f32 / 2.0, HEIGHT as f32 / 2.0);
|
||||||
for y in 0..HEIGHT {
|
for y in 0..HEIGHT {
|
||||||
for x in 0..WIDTH {
|
for x in 0..WIDTH {
|
||||||
let point = Vector2::new(x as f32, y as f32)* 4.0;
|
let mut point = Vector2::new(x as f32, y as f32);
|
||||||
let offset = Vector2::new(64120.0, 7320.0);
|
point -= half;
|
||||||
let point = point + offset;
|
point *= camera[2];
|
||||||
let mut n = 0.0;
|
point += half;
|
||||||
n += (sampler::sample_map_inter(point / 64.0, &MAP)-0.5)* 0.6;
|
let n = sample_world(point+camera_vec, rand);
|
||||||
n += noise::noise(point / 64.0, rand) / 1.0;
|
|
||||||
n += noise::noise(point / 32.0, rand) / 2.0;
|
|
||||||
n += noise::noise(point / 16.0, rand) / 4.0;
|
|
||||||
n += noise::noise(point / 8.0, rand) / 8.0;
|
|
||||||
n += noise::noise(point / 4.0, rand) / 16.0;
|
|
||||||
n += noise::noise(point / 2.0, rand) / 32.0;
|
|
||||||
//buffer[y*WIDTH + x] = (((n*0.5+0.5)*256.0) as u32) << 16| 0xFF005000;
|
|
||||||
buffer[y*WIDTH + x] =
|
buffer[y*WIDTH + x] =
|
||||||
if n > 0.1 {
|
if n > 0.1 {
|
||||||
0xFF00FF00
|
0xFF00FF00
|
||||||
|
@ -105,6 +136,28 @@ fn render_frame(buffer: &mut [u32; WIDTH*HEIGHT]) {
|
||||||
//draw_text("hi from rust", 0,100,30);
|
//draw_text("hi from rust", 0,100,30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn sample_world(point: Vector2<f32>, rand: PerlinBuf) -> f32 {
|
||||||
|
let offset = Vector2::new(64480.0, 7870.0);
|
||||||
|
//240.0,240.0
|
||||||
|
let point = point + offset;
|
||||||
|
let mut n = 0.0;
|
||||||
|
n += (sampler::sample_map_inter(point / 64.0, &MAP)-0.5)* 0.6;
|
||||||
|
n += noise::noise(point / 64.0, rand) / 1.0;
|
||||||
|
n += noise::noise(point / 32.0, rand) / 2.0;
|
||||||
|
n += noise::noise(point / 16.0, rand) / 4.0;
|
||||||
|
n += noise::noise(point / 8.0, rand) / 8.0;
|
||||||
|
n += noise::noise(point / 4.0, rand) / 16.0;
|
||||||
|
n += noise::noise(point / 2.0, rand) / 32.0;
|
||||||
|
n
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(u32)]
|
||||||
|
enum Keys {
|
||||||
|
Up = 38,
|
||||||
|
Down = 40,
|
||||||
|
Left = 37,
|
||||||
|
Right = 39
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
Loading…
Reference in a new issue