18 lines
487 B
Rust
18 lines
487 B
Rust
use std::sync::Arc;
|
|
|
|
use bevy::prelude::Component;
|
|
use common::space::three_dimensional::{traits::VoxelContainer, vec3generic::Vec3Generic};
|
|
|
|
use crate::voxels::bool_voxel::BoolVoxel;
|
|
|
|
#[derive(Component)]
|
|
pub struct VoxelFnLayer {
|
|
pub is_solid: Arc<dyn Fn(Vec3Generic<i32>) -> bool + Send + Sync>,
|
|
}
|
|
|
|
impl VoxelContainer<BoolVoxel> for VoxelFnLayer {
|
|
fn get_voxel_at_pos(&self, pos: Vec3Generic<i32>) -> Option<BoolVoxel> {
|
|
Some(BoolVoxel((self.is_solid)(pos)))
|
|
}
|
|
}
|