| Crates.io | raylite |
| lib.rs | raylite |
| version | 0.1.7 |
| created_at | 2023-08-22 11:25:17.703202+00 |
| updated_at | 2023-09-11 18:39:31.247395+00 |
| description | Lightweight, 0-dependency raycasting |
| homepage | |
| repository | https://github.com/heyimrein/raylite |
| max_upload_size | |
| id | 950981 |
| size | 7,039 |
Lightweight, 0-dependency raycasting in Rust
ð§WIP: Very early in development, feel free to post issues/contribute!
Install using cargo: cargo add raylite
main.rs:
use raylite::{cast, Barrier, Ray};
fn main() {
// Positions are differentiated here because emission direction matters
let ray = Ray {
position: (0., 0.), // Emission origin position
end_position: (2., 0.), // Emission end position
};
let mut bar = Barrier {
positions: ((1., -1.), (1., 1.)), // Direction does not matter for Barriers
};
let result = cast(&ray, &bar); // Returns a Result<RayHit, RayFail>
assert!(result.is_ok()); // Result is an Ok<RayHit> containing hit info
bar = Barrier {
positions: ((-1., -1.), (-1., 1.)), // Place barrier behind the Ray
};
let result = cast(&ray, &bar);
assert!(result.is_err()); // Result is an Err<RayFail::NoHit>
}
cast_wide() provides the same functionality as cast(), but requires you to provide a &Vec<Barrier> for batching purposes.