Crates.io | raylite |
lib.rs | raylite |
version | 0.1.7 |
source | src |
created_at | 2023-08-22 11:25:17.703202 |
updated_at | 2023-09-11 18:39:31.247395 |
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.