re-working the editor nodes

de-coupling godot resources from internal runtime logic
This commit is contained in:
2026-03-28 03:12:31 +03:30
parent 166f9e4aa7
commit d3c1b7bb5b
21 changed files with 393 additions and 235 deletions

View File

@@ -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