pub struct ReflectHandle { /* private fields */ }
Expand description

Reflect type data struct relating a Handle<T> back to the T asset type.

Say you want to look up the asset values of a list of handles when you have access to their &dyn Reflect form. Assets can be looked up in the world using ReflectAsset, but how do you determine which ReflectAsset to use when only looking at the handle? ReflectHandle is stored in the type registry on each Handle<T> type, so you can use ReflectHandle::asset_type_id to look up the ReflectAsset type data on the corresponding T asset type:

use bevy_asset::{ReflectHandle, ReflectAsset};

let handles: Vec<&dyn Reflect> = unimplemented!();
for handle in handles {
    let reflect_handle = type_registry.get_type_data::<ReflectHandle>(handle.type_id()).unwrap();
    let reflect_asset = type_registry.get_type_data::<ReflectAsset>(reflect_handle.asset_type_id()).unwrap();

    let handle = reflect_handle.downcast_handle_untyped(handle.as_any()).unwrap();
    let value = reflect_asset.get(world, handle).unwrap();
    println!("{value:?}");
}

Implementations§

source§

impl ReflectHandle

source

pub fn type_uuid(&self) -> Uuid

The bevy_reflect::TypeUuid of the asset

source

pub fn asset_type_id(&self) -> TypeId

The TypeId of the asset

source

pub fn downcast_handle_untyped(&self, handle: &dyn Any) -> Option<HandleUntyped>

A way to go from a Handle<T> in a dyn Any to a HandleUntyped

source

pub fn typed(&self, handle: HandleUntyped) -> Box<dyn Reflect>

A way to go from a HandleUntyped to a Handle<T> in a Box<dyn Reflect>. Equivalent of HandleUntyped::typed.

Trait Implementations§

source§

impl Clone for ReflectHandle

source§

fn clone(&self) -> ReflectHandle

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<A: Asset> FromType<Handle<A>> for ReflectHandle

source§

fn from_type() -> Self

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for Twhere T: Any,

source§

fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, 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.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>

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

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

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

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

source§

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

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

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

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

const: unstable · 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.
const: unstable · 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.
const: unstable · source§

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

Performs the conversion.
source§

impl<T> TypeData for Twhere T: 'static + Send + Sync + Clone,

source§

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

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

impl<T> Event for Twhere T: Send + Sync + 'static,