re-working the editor nodes
de-coupling godot resources from internal runtime logic
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
use fastnoise_lite::{FastNoiseLite, FractalType};
|
||||
use godot::{classes::class_macros::private::virtuals::Os::Vector3i, global::pow};
|
||||
use godot::classes::class_macros::private::virtuals::Os::Vector3i;
|
||||
|
||||
use crate::{chunk::ChunkColumn, generation::generator::SurfaceGenerator};
|
||||
use crate::chunk::{Chunk, chunk::CHUNK_SIZE};
|
||||
|
||||
pub struct SimpleSurfaceGenerator {
|
||||
noise: FastNoiseLite,
|
||||
surface_height: u32,
|
||||
chunk_size: Vector3i,
|
||||
}
|
||||
|
||||
impl SimpleSurfaceGenerator {
|
||||
pub fn new(seed: i32, frequency: f32, surface_height: u32, chunk_size: Vector3i) -> Self {
|
||||
pub fn new(seed: i32, frequency: f32, surface_height: u32) -> Self {
|
||||
let mut noise = FastNoiseLite::new();
|
||||
noise.frequency = frequency;
|
||||
noise.noise_type = fastnoise_lite::NoiseType::OpenSimplex2;
|
||||
@@ -20,7 +19,6 @@ impl SimpleSurfaceGenerator {
|
||||
Self {
|
||||
noise,
|
||||
surface_height,
|
||||
chunk_size,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,20 +28,20 @@ impl SimpleSurfaceGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
impl SurfaceGenerator for SimpleSurfaceGenerator {
|
||||
fn generate(&self, column: &mut ChunkColumn) {
|
||||
let size_x = self.chunk_size.x;
|
||||
let size_z = self.chunk_size.z;
|
||||
impl SimpleSurfaceGenerator {
|
||||
fn generate(&self, column: &mut Chunk) {
|
||||
let size_x = CHUNK_SIZE;
|
||||
let size_z = CHUNK_SIZE;
|
||||
|
||||
let base_x = column.world_position.0 * size_x;
|
||||
let base_z = column.world_position.1 * size_z;
|
||||
|
||||
let freq = 1.0 / 32.0;
|
||||
|
||||
let column_height = self.chunk_size.y * self.surface_height as i32;
|
||||
let column_height = CHUNK_SIZE * self.surface_height as i32;
|
||||
|
||||
for x in 0..self.chunk_size.x {
|
||||
for z in 0..self.chunk_size.z {
|
||||
for x in 0..CHUNK_SIZE {
|
||||
for z in 0..CHUNK_SIZE {
|
||||
// world coordinates of this column
|
||||
let world_x = base_x + x;
|
||||
let world_z = base_z + z;
|
||||
@@ -71,7 +69,7 @@ impl SurfaceGenerator for SimpleSurfaceGenerator {
|
||||
|
||||
let noise = Self::normalize_value(noise);
|
||||
|
||||
let column_height = self.chunk_size.y * self.surface_height as i32;
|
||||
let column_height = CHUNK_SIZE * self.surface_height as i32;
|
||||
let height = (noise.powi(2) * column_height as f32) as i32;
|
||||
|
||||
pos.y <= height
|
||||
|
||||
Reference in New Issue
Block a user