gaiku-3d 0.1.0

3d agnostic framework (game engine) terrain engine.
Documentation
use std::time::Instant;

use gaiku_3d::{
    bakers::MarchingCubesBaker,
    common::{Baker, FileFormat},
    formats::GoxReader,
};

mod common;

use crate::common::export;

fn read(name: &str) -> std::io::Result<()> {
    let now = Instant::now();
    let file = format!(
        "{}/examples/assets/{}.gox",
        env!("CARGO_MANIFEST_DIR"),
        name
    );
    let chunks = GoxReader::read(&file);
    let mut meshes = vec![];

    let reader_elapsed = now.elapsed().as_secs();
    let now = Instant::now();

    for chunk in chunks.iter() {
        let mesh = MarchingCubesBaker::bake(chunk);
        if let Some(mesh) = mesh {
            meshes.push((mesh, chunk.position()));
        }
    }

    let baker_elapsed = now.elapsed().as_secs();
    let now = Instant::now();

    export(meshes, &format!("{}_mc", name));

    println!(
        "<<{}>> Chunks: {} Reader: {} Baker: {} secs Export: {} secs",
        name,
        chunks.len(),
        reader_elapsed,
        baker_elapsed,
        now.elapsed().as_secs()
    );

    Ok(())
}

fn main() -> std::io::Result<()> {
    let _ = read("small_tree");
    let _ = read("terrain");
    let _ = read("planet");

    Ok(())
}