Compare commits

..

No commits in common. 'b2e17f5d8b9afcaa485c4dce35b89551d6758a2e' and 'aaab14f0f47669933ada65bcf0f3ca6bf33e03ad' have entirely different histories.

  1. 7
      Cargo.lock
  2. 1
      Cargo.toml
  3. 20
      src/bloxel/worldgen/mod.rs
  4. 5
      src/camera_controller.rs

7
Cargo.lock generated

@ -315,7 +315,6 @@ version = "0.1.0"
dependencies = [ dependencies = [
"bevy", "bevy",
"bitvec", "bitvec",
"noise-functions",
"overload", "overload",
"rand 0.9.0", "rand 0.9.0",
"zorder", "zorder",
@ -2837,12 +2836,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "noise-functions"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3420c74fd988a5c7da54fad9b8dba218f15431833817913d252dc59002c199c5"
[[package]] [[package]]
name = "nom" name = "nom"
version = "7.1.3" version = "7.1.3"

@ -14,7 +14,6 @@ opt-level = 3
[dependencies] [dependencies]
bevy = { version = "0.15.3", features = [ "file_watcher", "embedded_watcher" ] } bevy = { version = "0.15.3", features = [ "file_watcher", "embedded_watcher" ] }
bitvec = "1.0.1" bitvec = "1.0.1"
noise-functions = "0.8.1"
overload = "0.1.1" overload = "0.1.1"
rand = "0.9.0" rand = "0.9.0"
zorder = "0.2.2" zorder = "0.2.2"

@ -1,5 +1,5 @@
use bevy::prelude::*; use bevy::prelude::*;
use noise_functions::{Noise, Simplex}; use rand::prelude::*;
use crate::{ use crate::{
bloxel::{ bloxel::{
@ -111,6 +111,9 @@ fn generate_terrain(
return; return;
}; };
let mut rng = rand::rng();
let random_blocks = [terrain.grass, terrain.dirt, terrain.rock, terrain.sand];
for (entity, chunk_pos) in chunks_without_data.iter() { for (entity, chunk_pos) in chunks_without_data.iter() {
let mut data = ChunkData::new(terrain.air); let mut data = ChunkData::new(terrain.air);
let size = data.size().as_ivec3(); let size = data.size().as_ivec3();
@ -119,17 +122,10 @@ fn generate_terrain(
for x in 0..size.x { for x in 0..size.x {
let relative = IVec3::new(x, y, z); let relative = IVec3::new(x, y, z);
let block_pos = chunk_pos.to_block_pos(relative); let block_pos = chunk_pos.to_block_pos(relative);
let float_pos = Into::<IVec3>::into(block_pos).as_vec3(); let chance = (-block_pos.y as f64 / 32.).clamp(0., 1.);
if rng.random_bool(chance) {
let bias = ((float_pos.y + 32.) / 64.).clamp(-0.25, 1.); let block = *random_blocks.choose(&mut rng).unwrap();
let sample = Simplex data.set(relative, block);
.fbm(3, 0.65, 2.0)
.weighted(0.4)
.frequency(0.01)
.sample3(float_pos);
if sample > bias {
data.set(relative, terrain.rock);
} }
} }
} }

@ -1,7 +1,6 @@
use bevy::{input::mouse::AccumulatedMouseMotion, prelude::*, window::CursorGrabMode}; use bevy::{input::mouse::AccumulatedMouseMotion, prelude::*, window::CursorGrabMode};
const MOVEMENT_SPEED: f32 = 0.25; const MOVEMENT_SPEED: f32 = 0.15;
const SPRINT_MODIFIER: f32 = 5.;
const MOUSE_SENSITIVITY: Vec2 = Vec2::new(0.002, 0.002); const MOUSE_SENSITIVITY: Vec2 = Vec2::new(0.002, 0.002);
pub struct CameraControllerPlugin; pub struct CameraControllerPlugin;
@ -98,7 +97,7 @@ fn camera_keyboard_translation(
let mut movement = input * MOVEMENT_SPEED; let mut movement = input * MOVEMENT_SPEED;
if key.pressed(KeyCode::ShiftLeft) { if key.pressed(KeyCode::ShiftLeft) {
movement *= SPRINT_MODIFIER; movement *= 4.;
} }
if movement.x != 0. { if movement.x != 0. {

Loading…
Cancel
Save