1
Fork 0
avarus/server/src/blocks.rs

32 lines
627 B
Rust

use rstar::{self, RTree, RTreeObject, AABB, PointDistance};
use serde::{Deserialize, Serialize};
use pathfinding::prelude::astar;
use crate::Vec3;
pub type World = RTree<Block>;
#[derive(Serialize, Deserialize)]
pub struct Block {
pub name: String,
pub pos: super::Vec3,
}
impl RTreeObject for Block {
type Envelope = AABB<[i32;3]>;
fn envelope(&self) -> Self::Envelope {
AABB::from_point(self.pos.into())
}
}
impl PointDistance for Block {
fn distance_2(
&self,
point: &[i32;3],
) -> i32 {
(self.pos - Vec3::from(*point)).abs().sum()
}
}