pub struct Boid {
pub position: Vec2,
pub velocity: Vec2,
pub color: Alpha<Hsl, f32>,
pub visual_range: f32,
pub max_speed: f32,
pub max_affect: f32,
pub border: f32,
pub path: Vec<Vec2>,
/* private fields */
}
Expand description
A Boid
is a single member of a flock
Fields§
§position: Vec2
The current position
velocity: Vec2
The current velocity
color: Alpha<Hsl, f32>
The color of this boid
visual_range: f32
The range at which this boid can see other boids
max_speed: f32
The max speed of this boid
max_affect: f32
Not currently used
border: f32
Not currently used
path: Vec<Vec2>
A record of past positions
Implementations§
source§impl Boid
impl Boid
sourcepub fn new(id: u32, position: Vec2, velocity: Vec2) -> Self
pub fn new(id: u32, position: Vec2, velocity: Vec2) -> Self
Create a new Boid
instance
Arguments
id
- A unique id for this Boid
position
- The current position
velocity
- The current velocity
Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.));
assert_eq!(b.visual_range, 75.);
assert_eq!(b.max_speed, 15.);
assert_eq!(b.max_affect, 0.8);
sourcepub fn color(self, color: Alpha<Hsl, f32>) -> Self
pub fn color(self, color: Alpha<Hsl, f32>) -> Self
Set a single color for a Boid
and return a new instance
This is intended to be chained with new() in a builder pattern
Arguments
color
: The color to use
Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.)).color(hsla(0.7,0.5,0.1,0.3));
let c = b.color.into_components();
assert_eq!(c.1, 0.5);
sourcepub fn visual_range(self, visual_range: f32) -> Self
pub fn visual_range(self, visual_range: f32) -> Self
Set the visual_range for a Boid
This is intended to be chained with new() in a builder pattern
Arguments
visual_range
: the new visual_range
Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.)).visual_range(10.);
assert_eq!(b.visual_range, 10.);
sourcepub fn max_affect(self, max_affect: f32) -> Self
pub fn max_affect(self, max_affect: f32) -> Self
Set the max_affect for a Boid
This is intended to be chained with new() in a builder pattern
Arguments
max_affect
: the new max_affect
Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.)).max_affect(10.);
assert_eq!(b.max_affect, 10.);
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Boid
impl Send for Boid
impl Sync for Boid
impl Unpin for Boid
impl UnwindSafe for Boid
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<Swp, Dwp, T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<Swp, Dwp, T>,
Convert the source color to the destination color using the specified
method
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Convert the source color to the destination color using the bradford
method by default
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, U> ConvertInto<U> for Twhere
U: ConvertFrom<T>,
impl<T, U> ConvertInto<U> for Twhere
U: ConvertFrom<T>,
source§fn convert_into(self) -> U
fn convert_into(self) -> U
Convert into T with values clamped to the color defined bounds Read more
source§fn convert_unclamped_into(self) -> U
fn convert_unclamped_into(self) -> U
Convert into T. The resulting color might be invalid in its color space Read more
source§fn try_convert_into(self) -> Result<U, OutOfBounds<U>>
fn try_convert_into(self) -> Result<U, OutOfBounds<U>>
Convert into T, returning ok if the color is inside of its defined range,
otherwise an
OutOfBounds
error is returned which contains the unclamped color. Read more