Struct bevy_mod_raycast::RaycastSource
source · 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>
impl<T: TypePath> RaycastSource<T>
sourcepub fn new() -> RaycastSource<T>
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.
sourcepub fn with_ray_screenspace(
self,
cursor_pos_screen: Vec2,
camera: &Camera,
camera_transform: &GlobalTransform,
window: &Window
) -> Self
pub fn with_ray_screenspace( self, cursor_pos_screen: Vec2, camera: &Camera, camera_transform: &GlobalTransform, window: &Window ) -> Self
Initializes a RaycastSource with a valid screenspace ray.
sourcepub fn with_ray_transform(self, transform: Mat4) -> Self
pub fn with_ray_transform(self, transform: Mat4) -> Self
Initializes a RaycastSource with a valid ray derived from a transform.
sourcepub fn with_early_exit(self, should_early_exit: bool) -> Self
pub fn with_early_exit(self, should_early_exit: bool) -> Self
Set the should_early_exit
field of this raycast source.
sourcepub fn with_visibility(self, visibility: RaycastVisibility) -> Self
pub fn with_visibility(self, visibility: RaycastVisibility) -> Self
Set the visibility
field of this raycast source.
sourcepub fn new_screenspace(
cursor_pos_screen: Vec2,
camera: &Camera,
camera_transform: &GlobalTransform,
window: &Window
) -> Self
pub fn new_screenspace( cursor_pos_screen: Vec2, camera: &Camera, camera_transform: &GlobalTransform, window: &Window ) -> Self
Instantiates and initializes a RaycastSource with a valid screenspace ray.
sourcepub fn new_transform(transform: Mat4) -> Self
pub fn new_transform(transform: Mat4) -> Self
Initializes a RaycastSource with a valid ray derived from a transform.
sourcepub fn new_transform_empty() -> Self
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.
sourcepub fn get_intersections(&self) -> Option<&[(Entity, IntersectionData)]>
pub fn get_intersections(&self) -> Option<&[(Entity, IntersectionData)]>
Get a reference to the ray cast source’s intersections, if one exists.
sourcepub fn intersections(&self) -> &[(Entity, IntersectionData)]
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.
sourcepub fn get_nearest_intersection(&self) -> Option<(Entity, &IntersectionData)>
pub fn get_nearest_intersection(&self) -> Option<(Entity, &IntersectionData)>
Get a reference to the nearest intersection point, if there is one.
sourcepub fn intersect_primitive(
&self,
shape: Primitive3d
) -> Option<IntersectionData>
pub fn intersect_primitive( &self, shape: Primitive3d ) -> Option<IntersectionData>
Run an intersection check between this RaycastSource
and a 3D primitive Primitive3d
.
sourcepub fn intersections_mut(&mut self) -> &mut Vec<(Entity, IntersectionData)>
pub fn intersections_mut(&mut self) -> &mut Vec<(Entity, IntersectionData)>
Get a mutable reference to the ray cast source’s intersections.
sourcepub fn is_screenspace(&self) -> bool
pub fn is_screenspace(&self) -> bool
Returns true
if this is using RaycastMethod::Screenspace
.
Trait Implementations§
source§impl<T: TypePath> Clone for RaycastSource<T>
impl<T: TypePath> Clone for RaycastSource<T>
source§impl<T: TypePath> Component for RaycastSource<T>where
Self: Send + Sync + 'static,
impl<T: TypePath> Component for RaycastSource<T>where Self: Send + Sync + 'static,
source§impl<T: TypePath> Default for RaycastSource<T>
impl<T: TypePath> Default for RaycastSource<T>
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,
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>
fn from_reflect(reflect: &dyn Reflect) -> Option<Self>
Self
from a reflected value.§fn take_from_reflect(
reflect: Box<dyn Reflect>
) -> Result<Self, Box<dyn Reflect>>
fn take_from_reflect( reflect: Box<dyn Reflect> ) -> Result<Self, Box<dyn Reflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moresource§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,
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,
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,
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 get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
TypeInfo
] of the type represented by this value. Read moresource§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
.source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read moresource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
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,
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>
fn field(&self, name: &str) -> Option<&dyn Reflect>
name
as a &dyn Reflect
.source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
name
as a
&mut dyn Reflect
.source§fn field_at(&self, index: usize) -> Option<&dyn Reflect>
fn field_at(&self, index: usize) -> Option<&dyn Reflect>
index
as a
&dyn Reflect
.source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
index
as a &mut dyn Reflect
.source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
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,
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
fn type_path() -> &'static str
source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
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,
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,
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§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
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
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist.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
§impl<C> Bundle for Cwhere
C: Component,
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>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere C: Component,
fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))
§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere T: TypePath,
§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
].§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
TypePath::short_type_path
].§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
].§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
].§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
TypePath::module_path
].§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given [World]§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere S: Struct,
§impl<T> GetPath for Twhere
T: Reflect,
impl<T> GetPath for Twhere T: Reflect,
§fn reflect_path<'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'r, 'p>( &'r self, path: &'p str ) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn reflect_path_mut<'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'r, 'p>( &'r mut self, path: &'p str ) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more