Struct tahga::pursuit::boids::boid::Boid

source ·
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

source

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);
source

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);
source

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.);
source

pub fn max_speed(self, max_speed: f32) -> Self

Set the max_speed for a Boid

This is intended to be chained with new() in a builder pattern

Arguments

max_speed: the new max_speed

Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.)).max_speed(10.);
assert_eq!(b.max_speed, 10.);
source

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.);
source

pub fn border(self, border: f32) -> Self

Set the border for a Boid

This is intended to be chained with new() in a builder pattern

Arguments

border: the new border

Examples
use nannou::prelude::*;
use tahga::pursuit::boids::boid::Boid;
let b = Boid::new(0, vec2(0., 0.), vec2(10., 10.)).border(10.);
assert_eq!(b.border, 10.);
source

pub fn update(&mut self, boids: &Vec<Boid>, rect: &Rect)

Update the position and velocity of a Boid

boids - A reference to the Vec of all boids

rect - The canvas rectangle

Trait Implementations§

source§

impl Clone for Boid

source§

fn clone(&self) -> Boid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Boid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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
where T: Component + Float, Swp: WhitePoint, Dwp: WhitePoint, D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<Swp, Dwp, T>,

Convert the source color to the destination color using the specified method
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, U> ConvertInto<U> for T
where U: ConvertFrom<T>,

source§

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

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>>

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
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WasmNotSend for T
where T: Send,

source§

impl<T> WasmNotSync for T
where T: Sync,