raylite

Crates.ioraylite
lib.rsraylite
version0.1.7
sourcesrc
created_at2023-08-22 11:25:17.703202
updated_at2023-09-11 18:39:31.247395
descriptionLightweight, 0-dependency raycasting
homepage
repositoryhttps://github.com/heyimrein/raylite
max_upload_size
id950981
size7,039
rein (heyimrein)

documentation

README

raylite

Lightweight, 0-dependency raycasting in Rust

🔧WIP: Very early in development, feel free to post issues/contribute!

Crates.io

🚀 Installation

Install using cargo: cargo add raylite

ðŸŠķ Example

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.

Commit count: 33

cargo fmt