6个版本 (破坏性)
0.5.0 | 2024年7月10日 |
---|---|
0.4.0 | 2024年6月28日 |
0.3.1 | 2024年1月6日 |
0.3.0 | 2023年11月7日 |
0.1.0 | 2023年3月7日 |
#1384 in 游戏开发
每月298次下载
12KB
248 行
bevy_sparse_grid_2d
为使用Bevy而设计的具有观点的2D稀疏网格。用于存储和查询实体。
我个人正在将其用于几个项目中简单的碰撞广域。
使用方法
use bevy::{
math::{bounding::Aabb2d, vec2},
prelude::*,
utils::HashSet,
};
use bevy_sparse_grid_2d::SparseGrid2d;
const TILE_SIZE: usize = 1; // how wide each cell is
let mut db = SparseGrid2d::<TILE_SIZE>::default();
let e1 = Entity::from_raw(1);
let e2 = Entity::from_raw(2);
db.insert_point(vec2(0.5, 0.5), e1);
db.insert_point(vec2(0.499, 0.501), e2);
// query a single point
let matches: HashSet<_> = db.point_iter(vec2(0.499, 0.501)).collect();
assert!(matches.contains(&e1));
assert!(matches.contains(&e2));
assert_eq!(matches.len(), 2);
// query an aabb
let aabb = Aabb2d::new(Vec2::new(0.001, 0.001), Vec2::new(0.001, 0.001));
let matches = db.query_aabb(aabb);
assert!(matches.contains(&e1));
assert!(matches.contains(&e2));
assert_eq!(matches.len(), 2);
请参阅lib.rs中的测试
Bevy版本支持
main
分支针对最新的Bevy版本。
bevy | bevy_sparse_grid_2d |
---|---|
0.14 | 0.5, main |
0.13 | 0.4 |
0.12 | 0.3 |
0.11 | 0.2 |
0.10 | 0.1 |
许可证
MIT或Apache-2.0
贡献
欢迎PRs!
依赖关系
~23MB
~426K SLoC