pub struct Painter {
    prims: RefCell<Store<Primitive>>,
    fills: RefCell<Vec<(Id<Primitive>, Fill)>>,
    entities: RefCell<Vec<EntityInfo>>,
    render_area: Aabr<i32>,
}

Fields§

§prims: RefCell<Store<Primitive>>§fills: RefCell<Vec<(Id<Primitive>, Fill)>>§entities: RefCell<Vec<EntityInfo>>§render_area: Aabr<i32>

Implementations§

source§

impl Painter

source

pub fn depth(&self, prim: Id<Primitive>) -> usize

Computes the depth of the tree rooted at prim

source

pub fn order_by_depth( &self, a: impl Into<Id<Primitive>>, b: impl Into<Id<Primitive>> ) -> (Id<Primitive>, Id<Primitive>)

Orders two primitives by depth, since (A && (B && C)) is cheaper to evaluate than ((A && B) && C) due to short-circuiting.

source

pub fn aabb(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of an axis aligned bounding box. The geometric name of this shape is a “right rectangular prism.”

source

pub fn sphere(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a sphere using a radius check.

source

pub fn sphere_with_radius( &self, origin: Vec3<i32>, radius: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a sphere using a radius check where a radius and origin are parameters instead of a bounding box.

source

pub fn sphere2(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a sphere by returning an ellipsoid with congruent legs. The voxel artifacts are slightly different from the radius check sphere() method.

source

pub fn ellipsoid(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of an ellipsoid by constructing a superquadric with a degree value of 2.0.

source

pub fn superquadric(&self, aabb: Aabb<i32>, degree: f32) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a superquadric. A superquadric can be thought of as a rounded Aabb where the degree determines how rounded the corners are. Values from 0.0 to 1.0 produce concave faces or “inverse rounded corners.” A value of 1.0 produces a stretched octahedron (or a non-stretched octahedron if the provided Aabb is a cube). Values from 1.0 to 2.0 produce an octahedron with convex faces. A degree of 2.0 produces an ellipsoid. Values larger than 2.0 produce a rounded Aabb. The degree cannot be less than 0.0 without the shape extending to infinity.

source

pub fn rounded_aabb(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a rounded Aabb by producing a superquadric with a degree value of 3.0.

source

pub fn cylinder(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of the largest cylinder that fits in the provided Aabb.

source

pub fn horizontal_cylinder(&self, aabb: Aabb<i32>, dir: Dir) -> PrimitiveRef<'_>

Returns a PrimitiveRef of the largest horizontal cylinder that fits in the provided Aabb.

source

pub fn cylinder_with_radius( &self, origin: Vec3<i32>, radius: f32, height: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a cylinder using a radius check where a radius and origin are parameters instead of a bounding box.

source

pub fn cone(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of the largest cone that fits in the provided Aabb.

source

pub fn cone_with_radius( &self, origin: Vec3<i32>, radius: f32, height: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a cone using a radius check where a radius and origin are parameters instead of a bounding box.

source

pub fn line( &self, a: Vec3<impl AsPrimitive<f32>>, b: Vec3<impl AsPrimitive<f32>>, radius: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional line segment with a provided radius.

source

pub fn line_two_radius( &self, a: Vec3<impl AsPrimitive<f32>>, b: Vec3<impl AsPrimitive<f32>>, r0: f32, r1: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional line segment with two radius.

source

pub fn segment_prism( &self, a: Vec3<impl AsPrimitive<f32>>, b: Vec3<impl AsPrimitive<f32>>, radius: f32, height: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional line segment where the provided radius only affects the width of the shape. The height of the shape is determined by the height parameter. The height of the shape is extended upwards along the z axis from the line. The top and bottom of the shape are planar and parallel to each other and the line.

source

pub fn cubic_bezier( &self, start: Vec3<impl AsPrimitive<f32>>, ctrl0: Vec3<impl AsPrimitive<f32>>, ctrl1: Vec3<impl AsPrimitive<f32>>, end: Vec3<impl AsPrimitive<f32>>, radius: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional cubic bezier curve by dividing the curve into line segments with one segment approximately every length of 5 blocks.

source

pub fn cubic_bezier_with_num_segments( &self, bezier: CubicBezier3<f32>, radius: f32, num_segments: u16 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional cubic bezier curve by dividing the curve into num_segments line segments.

source

pub fn cubic_bezier_prism( &self, start: Vec3<impl AsPrimitive<f32>>, ctrl0: Vec3<impl AsPrimitive<f32>>, ctrl1: Vec3<impl AsPrimitive<f32>>, end: Vec3<impl AsPrimitive<f32>>, radius: f32, height: f32 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional cubic bezier curve where the radius only governs the width of the curve. The height is governed by the height parameter where the shape extends upwards from the bezier curve by the value of height. The shape is constructed by dividing the curve into line segment prisms with one segment prism approximately every length of 5 blocks.

source

pub fn cubic_bezier_prism_with_num_segments( &self, bezier: CubicBezier3<f32>, radius: f32, height: f32, num_segments: u16 ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a 3-dimensional cubic bezier curve where the radius only governs the width of the curve. The height is governed by the height parameter where the shape extends upwards from the bezier curve by the value of height. The shape is constructed by dividing the curve into num_segments line segment prisms.

source

pub fn plane( &self, aabr: Aabr<i32>, origin: Vec3<i32>, gradient: Vec2<f32> ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a plane. The Aabr provides the bounds for the plane in the xy plane and the gradient determines its slope through the dot product. A gradient of <1.0, 0.0> creates a plane with a slope of 1.0 in the xz plane.

source

pub fn ramp_inset( &self, aabb: Aabb<i32>, inset: i32, dir: Dir ) -> PrimitiveRef<'_>

Returns a PrimitiveRef of an Aabb with a slope cut into it. The inset governs the slope. The dir determines which direction the ramp points.

source

pub fn ramp(&self, aabb: Aabb<i32>, dir: Dir) -> PrimitiveRef<'_>

source

pub fn gable(&self, aabb: Aabb<i32>, inset: i32, dir: Dir) -> PrimitiveRef<'_>

Returns a PrimitiveRef of a triangular prism with the base being vertical. A gable is a tent shape. The inset governs the slope of the gable. The dir determines which way the gable points.

source

pub fn sprite(&self, pos: Vec3<i32>, sprite: SpriteKind)

Places a sprite at the provided location with the default rotation.

source

pub fn rotated_sprite(&self, pos: Vec3<i32>, sprite: SpriteKind, ori: u8)

Places a sprite at the provided location with the provided orientation.

source

pub fn rotated_sprite_with_cfg( &self, pos: Vec3<i32>, sprite: SpriteKind, ori: u8, cfg: SpriteCfg )

Places a sprite at the provided location with the provided orientation and the provided [SpriteCfg].

source

pub fn resource_sprite(&self, pos: Vec3<i32>, sprite: SpriteKind, ori: u8)

Places a sprite at the provided location with the provided orientation which will be tracked by rtsim nature if the sprite has an associated [ChunkResource].

source

pub fn pyramid(&self, aabb: Aabb<i32>) -> PrimitiveRef<'_>

Returns a PrimitiveRef of the largest pyramid with a slope of 1 that fits in the provided Aabb.

source

pub fn prim(&self, prim: Primitive) -> PrimitiveRef<'_>

Used to create a new PrimitiveRef. Requires the desired Primitive to be supplied.

source

pub fn empty(&self) -> PrimitiveRef<'_>

Returns a PrimitiveRef of an empty primitive. Useful when additional primitives are unioned within a loop.

source

pub fn fill(&self, prim: impl Into<Id<Primitive>>, fill: Fill)

Fills the supplied primitive with the provided Fill.

source

pub fn vault(&self, aabb: Aabb<i32>, dir: Dir) -> PrimitiveRef<'_>

    ___
   /  /\
  /__/  |
 /   \  |
|     | /
|_____|/

A horizontal half cylinder on top of an Aabb.

source

pub fn aabbs_around_aabb( &self, aabb: Aabb<i32>, size: i32, offset: i32 ) -> PrimitiveRef<'_>

Place aabbs around another aabb in a symmetric and distributed manner.

source

pub fn staircase_in_aabb( &self, aabb: Aabb<i32>, thickness: i32, start_dir: Dir ) -> PrimitiveRef<'_>

source

pub fn column( &self, point: Vec2<i32>, range: impl RangeBounds<i32> ) -> PrimitiveRef<'_>

source

pub fn render_aabr(&self) -> Aabr<i32>

The area that the canvas is currently rendering.

source

pub fn spawn(&self, entity: EntityInfo)

Spawns an entity if it is in the render_aabr, otherwise does nothing.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Painter

§

impl !Send for Painter

§

impl !Sync for Painter

§

impl Unpin for Painter

§

impl !UnwindSafe for Painter

Blanket Implementations§

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
§

impl<T, U> Cast<U> for T
where U: FromCast<T>,

§

fn cast(self) -> U

Numeric cast from self to T.
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromCast<T> for T

§

fn from_cast(t: T) -> T

Numeric cast from T to Self.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<Context> SubContext<Context> for Context

§

fn sub_context(self) -> Context

§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more