Skip to main content

ExplosionExposureRaycast

Struct ExplosionExposureRaycast 

Source
pub(crate) struct ExplosionExposureRaycast<'world> {
    world: &'world World,
    collision_context: BlockCollisionContext,
    full_chunks: LocalFullChunkHolderCache,
    entries: [ExplosionExposureCacheEntry; 256],
    clear_grid: ExplosionExposureClearGrid,
    generation: u32,
}
Expand description

Bounded cache for vanilla explosion exposure rays.

Missing chunks are never cached, allowing asynchronous Full publication to become visible while the synchronous gameplay callback is running. Dynamic and non-Vanilla collision shapes are resolved on every visit so live block entities and plugin callbacks retain their normal query semantics. Reuse across entities is only valid when the caller can prove that the intervening entity callbacks cannot mutate blocks; callers must clear the cache before invoking any other entity implementation.

Fields§

§world: &'world World§collision_context: BlockCollisionContext§full_chunks: LocalFullChunkHolderCache§entries: [ExplosionExposureCacheEntry; 256]§clear_grid: ExplosionExposureClearGrid§generation: u32

Implementations§

Source§

impl<'world> ExplosionExposureRaycast<'world>

Source

pub(crate) const fn new( world: &'world World, collision_context: BlockCollisionContext, ) -> Self

Source

pub(crate) fn configure_clear_grid(&mut self, min: BlockPos, max: BlockPos)

Configures a bounded, explosion-local cache of statically clear positions.

Bounds that exceed the inline capacity disable the optimization and retain the exact compatibility path.

Source

pub(crate) fn clear(&mut self)

Drops every retained static collision result.

Source

pub(crate) const fn set_collision_context( &mut self, collision_context: BlockCollisionContext, )

Selects the entity collision context used by subsequent exposure rays.

Source

pub(crate) fn stable_air_box_is_clear( &mut self, bounds: BlockRegionBounds, ) -> bool

Proves that an inclusive block box contains only immutable Vanilla air.

Source

fn retain_cache_after_collision_query(&mut self, block: BlockRef) -> bool

Keeps cached shapes only across Steel-owned Vanilla collision behavior calls.

Plugin behavior may mutate another block while answering a shape query. Clearing after its callback makes the next Vanilla DDA visit read the same live state Vanilla would observe.

Source

pub(crate) fn is_path_clear(&mut self, from: DVec3, to: DVec3) -> bool

Returns whether a collider-only, fluid-free exposure ray misses every block.

Source

fn block_intersects_ray( &mut self, pos: BlockPos, from: DVec3, to: DVec3, ) -> bool

Source

fn block_intersects_ray_exact( &mut self, pos: BlockPos, from: DVec3, to: DVec3, unresolved_grid_index: Option<usize>, ) -> bool

Source

fn static_collision_intersects( collision: OffsetVoxelShape, pos: BlockPos, from: DVec3, to: DVec3, ) -> bool

Auto Trait Implementations§

§

impl<'world> !RefUnwindSafe for ExplosionExposureRaycast<'world>

§

impl<'world> !UnwindSafe for ExplosionExposureRaycast<'world>

§

impl<'world> Freeze for ExplosionExposureRaycast<'world>

§

impl<'world> Send for ExplosionExposureRaycast<'world>

§

impl<'world> Sync for ExplosionExposureRaycast<'world>

§

impl<'world> Unpin for ExplosionExposureRaycast<'world>

§

impl<'world> UnsafeUnpin for ExplosionExposureRaycast<'world>

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoShared for T

Source§

fn into_shared(self) -> Arc<Mutex<RawMutex, Self>> ⓘ

Wraps this value in an Arc<SyncMutex<>>
§

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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