pub struct RaycastSource<T: TypePath> {
    pub cast_method: RaycastMethod,
    pub should_early_exit: bool,
    pub visibility: RaycastVisibility,
    pub ray: Option<Ray3d>,
    /* private fields */
}
Expand description

The RaycastSource component is used to generate rays with the specified cast_method. A ray is generated when the RaycastSource is initialized, either by waiting for update_raycast system to process the ray, or by using a with_ray function.`

Fields§

§cast_method: RaycastMethod

The method used to generate rays for this raycast.

§should_early_exit: bool

When true, raycasting will only hit the nearest entity, skipping any entities that are further away. This can significantly improve performance in cases where a ray intersects many AABBs.

§visibility: RaycastVisibility

Determines how raycasting should consider entity visibility.

§ray: Option<Ray3d>

Implementations§

source§

impl<T: TypePath> RaycastSource<T>

source

pub fn new() -> RaycastSource<T>

Instantiates a RaycastSource. It will not be initialized until the update_raycast system runs, or one of the with_ray functions is run.

source

pub fn with_ray_screenspace( self, cursor_pos_screen: Vec2, camera: &Camera, camera_transform: &GlobalTransform ) -> Self

Initializes a RaycastSource with a valid screenspace ray.

source

pub fn with_ray_transform(self, transform: Mat4) -> Self

Initializes a RaycastSource with a valid ray derived from a transform.

source

pub fn with_early_exit(self, should_early_exit: bool) -> Self

Set the should_early_exit field of this raycast source.

source

pub fn with_visibility(self, visibility: RaycastVisibility) -> Self

Set the visibility field of this raycast source.

source

pub fn new_screenspace( cursor_pos_screen: Vec2, camera: &Camera, camera_transform: &GlobalTransform ) -> Self

Instantiates and initializes a RaycastSource with a valid screenspace ray.

source

pub fn new_transform(transform: Mat4) -> Self

Initializes a RaycastSource with a valid ray derived from a transform.

source

pub fn new_transform_empty() -> Self

Instantiates a RaycastSource with RaycastMethod::Transform, and an empty ray. It will not be initialized until the update_raycast system is run and a [GlobalTransform] is present on this entity.

Warning

Only use this if the entity this is associated with will have its [Transform] or [GlobalTransform] specified elsewhere. If the [GlobalTransform] is not set, this ray casting source will never be able to generate a raycast.

source

pub fn get_intersections(&self) -> Option<&[(Entity, IntersectionData)]>

Get a reference to the ray cast source’s intersections, if one exists.

source

pub fn intersections(&self) -> &[(Entity, IntersectionData)]

Get a reference to the ray cast source’s intersections. Returns an empty list if there are no intersections.

source

pub fn get_nearest_intersection(&self) -> Option<(Entity, &IntersectionData)>

Get a reference to the nearest intersection point, if there is one.

source

pub fn intersect_primitive( &self, shape: Primitive3d ) -> Option<IntersectionData>

Run an intersection check between this RaycastSource and a 3D primitive Primitive3d.

source

pub fn get_ray(&self) -> Option<Ray3d>

Get a copy of the ray cast source’s ray.

source

pub fn intersections_mut(&mut self) -> &mut Vec<(Entity, IntersectionData)>

Get a mutable reference to the ray cast source’s intersections.

source

pub fn is_screenspace(&self) -> bool

Returns true if this is using RaycastMethod::Screenspace.

Trait Implementations§

source§

impl<T: Clone + TypePath> Clone for RaycastSource<T>

source§

fn clone(&self) -> RaycastSource<T>

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<T: TypePath> Component for RaycastSource<T>where Self: Send + Sync + 'static,

§

type Storage = TableStorage

A marker type indicating the storage type used for this component. This must be either [TableStorage] or [SparseStorage].
source§

impl<T: TypePath> Default for RaycastSource<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T: TypePath> From<&RaycastSource<T>> for RaycastSettings

source§

fn from(value: &RaycastSource<T>) -> Self

Converts to this type from the input type.
source§

impl<T> FromReflect for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync + Default, PhantomData<fn() -> T>: Any + Send + Sync + Default, T: TypePath + TypePath,

source§

fn from_reflect(reflect: &dyn Reflect) -> Option<Self>

Constructs a concrete instance of Self from a reflected value.
§

fn take_from_reflect( reflect: Box<dyn Reflect, Global> ) -> Result<Self, Box<dyn Reflect, Global>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
source§

impl<T> GetTypeRegistration for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync, PhantomData<fn() -> T>: Any + Send + Sync, T: TypePath + TypePath,

source§

fn get_type_registration() -> TypeRegistration

source§

impl<T> Reflect for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync, PhantomData<fn() -> T>: Any + Send + Sync, T: TypePath + TypePath,

source§

fn type_name(&self) -> &str

Returns the type name of the underlying type.
source§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the [TypeInfo] of the type represented by this value. Read more
source§

fn into_any(self: Box<Self>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>.
source§

fn as_any(&self) -> &dyn Any

Returns the value as a &dyn Any.
source§

fn as_any_mut(&mut self) -> &mut dyn Any

Returns the value as a &mut dyn Any.
source§

fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>

Casts this type to a boxed reflected value.
source§

fn as_reflect(&self) -> &dyn Reflect

Casts this type to a reflected value.
source§

fn as_reflect_mut(&mut self) -> &mut dyn Reflect

Casts this type to a mutable reflected value.
source§

fn clone_value(&self) -> Box<dyn Reflect>

Clones the value as a Reflect trait object. Read more
source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
source§

fn apply(&mut self, value: &dyn Reflect)

Applies a reflected value to this value. Read more
source§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an enumeration of “kinds” of type. Read more
source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
source§

fn reflect_owned(self: Box<Self>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
source§

fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>

Returns a “partial equality” comparison result. Read more
§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
§

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

Debug formatter for the value. Read more
§

fn serializable(&self) -> Option<Serializable<'_>>

Returns a serializable version of the value. Read more
§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
source§

impl<T> Struct for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync, PhantomData<fn() -> T>: Any + Send + Sync, T: TypePath + TypePath,

source§

fn field(&self, name: &str) -> Option<&dyn Reflect>

Returns a reference to the value of the field named name as a &dyn Reflect.
source§

fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>

Returns a mutable reference to the value of the field named name as a &mut dyn Reflect.
source§

fn field_at(&self, index: usize) -> Option<&dyn Reflect>

Returns a reference to the value of the field with index index as a &dyn Reflect.
source§

fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>

Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect.
source§

fn name_at(&self, index: usize) -> Option<&str>

Returns the name of the field with index index.
source§

fn field_len(&self) -> usize

Returns the number of fields in the struct.
source§

fn iter_fields(&self) -> FieldIter<'_>

Returns an iterator over the values of the reflectable fields for this struct.
source§

fn clone_dynamic(&self) -> DynamicStruct

Clones the struct into a [DynamicStruct].
source§

impl<T> TypePath for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync, PhantomData<fn() -> T>: Any + Send + Sync, T: TypePath + TypePath,

source§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
source§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
source§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
source§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
source§

fn module_path() -> Option<&'static str>

Returns the path to the moudle the type is in, or None if it is anonymous. Read more
source§

impl<T> Typed for RaycastSource<T>where RaycastMethod: FromReflect, bool: FromReflect, RaycastVisibility: FromReflect, Option<Ray3d>: FromReflect, Vec<(Entity, IntersectionData)>: Any + Send + Sync, PhantomData<fn() -> T>: Any + Send + Sync, T: TypePath + TypePath,

source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for RaycastSource<T>

§

impl<T> Send for RaycastSource<T>

§

impl<T> Sync for RaycastSource<T>

§

impl<T> Unpin for RaycastSource<T>

§

impl<T> UnwindSafe for RaycastSource<T>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T [ShaderType] for self. When used in [AsBindGroup] derives, it is safe to assume that all images in self exist.
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<C> Bundle for Cwhere C: Component,

§

fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId) )

§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> Cwhere F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a, Aligned>,

§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T, Global>) -> Arc<dyn Any + Send + Sync, Global>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<C> DynamicBundle for Cwhere C: Component,

§

fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_, Aligned>) )

§

impl<T> DynamicTypePath for Twhere T: TypePath,

§

fn reflect_type_path(&self) -> &str

See [TypePath::type_path].
§

fn reflect_short_type_path(&self) -> &str

See [TypePath::short_type_path].
§

fn reflect_type_ident(&self) -> Option<&str>

See [TypePath::type_ident].
§

fn reflect_crate_name(&self) -> Option<&str>

See [TypePath::crate_name].
§

fn reflect_module_path(&self) -> Option<&str>

See [TypePath::module_path].
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromWorld for Twhere T: Default,

§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given [World]
§

impl<S> GetField for Swhere S: Struct,

§

fn get_field<T>(&self, name: &str) -> Option<&T>where T: Reflect,

Returns a reference to the value of the field named name, downcast to T.
§

fn get_field_mut<T>(&mut self, name: &str) -> Option<&mut T>where T: Reflect,

Returns a mutable reference to the value of the field named name, downcast to T.
§

impl<T> GetPath for Twhere T: Reflect,

§

fn reflect_path<'r, 'p>( &'r self, path: &'p str ) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>

Returns a reference to the value specified by path. Read more
§

fn reflect_path_mut<'r, 'p>( &'r mut self, path: &'p str ) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>

Returns a mutable reference to the value specified by path. Read more
§

fn path<T, 'r, 'p>( &'r self, path: &'p str ) -> Result<&'r T, ReflectPathError<'p>>where T: Reflect,

Returns a statically typed reference to the value specified by path. Read more
§

fn path_mut<T, 'r, 'p>( &'r mut self, path: &'p str ) -> Result<&'r mut T, ReflectPathError<'p>>where T: Reflect,

Returns a statically typed mutable reference to the value specified by path. Read more
source§

impl<T> Instrument for T

source§

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

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

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 Twhere 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> ToOwned for Twhere 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 Twhere 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 Twhere 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<T> TypeData for Twhere T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData, Global>

§

impl<T> Upcast<T> for T

§

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

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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