pub(crate) struct FigureModelCache<Skel>{
    models: HashMap<FigureKey<Skel::Body>, ((<Skel::Body as BodySpec>::ModelEntryFuture<LOD_COUNT>, Skel::Attr), u64)>,
    manifests: <Skel::Body as BodySpec>::Manifests,
    watcher: ReloadWatcher,
}Fields§
§models: HashMap<FigureKey<Skel::Body>, ((<Skel::Body as BodySpec>::ModelEntryFuture<LOD_COUNT>, Skel::Attr), u64)>§manifests: <Skel::Body as BodySpec>::Manifests§watcher: ReloadWatcherImplementations§
Source§impl<Skel: Skeleton> FigureModelCache<Skel>
 
impl<Skel: Skeleton> FigureModelCache<Skel>
pub fn new() -> Self
pub fn watcher_reloaded(&mut self) -> bool
Sourcepub(crate) fn get_model<'b>(
    &'b self,
    _atlas: &FigureAtlas,
    body: Skel::Body,
    inventory: Option<&Inventory>,
    _tick: u64,
    camera_mode: CameraMode,
    character_state: Option<&CharacterState>,
    item_key: Option<ItemKey>,
) -> Option<&'b <<Skel::Body as BodySpec>::ModelEntryFuture<LOD_COUNT> as ModelEntryFuture<LOD_COUNT>>::ModelEntry>
 
pub(crate) fn get_model<'b>( &'b self, _atlas: &FigureAtlas, body: Skel::Body, inventory: Option<&Inventory>, _tick: u64, camera_mode: CameraMode, character_state: Option<&CharacterState>, item_key: Option<ItemKey>, ) -> Option<&'b <<Skel::Body as BodySpec>::ModelEntryFuture<LOD_COUNT> as ModelEntryFuture<LOD_COUNT>>::ModelEntry>
NOTE: Intended for render time (useful with systems like wgpu that expect data used by the rendering pipelines to be stable throughout the render pass).
NOTE: Since this is intended to be called primarily in order to render the model, we don’t return skeleton data.
pub fn clear_models(&mut self)
pub fn clean(&mut self, atlas: &mut FigureAtlas, tick: u64)
Source§impl<Skel: Skeleton> FigureModelCache<Skel>where
    Skel::Body: BodySpec<BoneMesh = BoneMeshes, ModelEntryFuture<LOD_COUNT> = FigureModelEntryFuture<LOD_COUNT>> + Eq + Hash,
 
impl<Skel: Skeleton> FigureModelCache<Skel>where
    Skel::Body: BodySpec<BoneMesh = BoneMeshes, ModelEntryFuture<LOD_COUNT> = FigureModelEntryFuture<LOD_COUNT>> + Eq + Hash,
pub fn get_or_create_model<'c>( &'c mut self, renderer: &mut Renderer, atlas: &mut FigureAtlas, body: Skel::Body, inventory: Option<&Inventory>, extra: <Skel::Body as BodySpec>::Extra, tick: u64, camera_mode: CameraMode, character_state: Option<&CharacterState>, slow_jobs: &SlowJobPool, item_key: Option<ItemKey>, ) -> (Option<&'c FigureModelEntry<LOD_COUNT>>, &'c Skel::Attr)
Source§impl<Skel: Skeleton> FigureModelCache<Skel>where
    Skel::Body: BodySpec<BoneMesh = ShipBoneMeshes, ModelEntryFuture<LOD_COUNT> = TerrainModelEntryFuture<LOD_COUNT>> + Eq + Hash,
 
impl<Skel: Skeleton> FigureModelCache<Skel>where
    Skel::Body: BodySpec<BoneMesh = ShipBoneMeshes, ModelEntryFuture<LOD_COUNT> = TerrainModelEntryFuture<LOD_COUNT>> + Eq + Hash,
pub(crate) fn get_or_create_terrain_model<'c>( &'c mut self, renderer: &mut Renderer, atlas: &mut FigureAtlas, body: Skel::Body, extra: <Skel::Body as BodySpec>::Extra, tick: u64, slow_jobs: &SlowJobPool, sprite_render_state: &Arc<SpriteRenderState>, ) -> (Option<&'c TerrainModelEntry<LOD_COUNT>>, &'c Skel::Attr)
pub fn get_blocks_of_interest( &self, body: Skel::Body, ) -> Option<(&BlocksOfInterest, Vec3<f32>)>
pub fn get_sprites( &self, body: Skel::Body, ) -> Option<&[Instances<SpriteInstance>; 5]>
Auto Trait Implementations§
impl<Skel> Freeze for FigureModelCache<Skel>
impl<Skel> RefUnwindSafe for FigureModelCache<Skel>where
    <Skel as Skeleton>::Body: Sized + RefUnwindSafe,
    <<Skel as Skeleton>::Body as BodySpec>::Manifests: RefUnwindSafe,
    <<Skel as Skeleton>::Body as BodySpec>::ModelEntryFuture<LOD_COUNT>: RefUnwindSafe,
    <Skel as Skeleton>::Attr: RefUnwindSafe,
impl<Skel> Send for FigureModelCache<Skel>
impl<Skel> Sync for FigureModelCache<Skel>
impl<Skel> Unpin for FigureModelCache<Skel>
impl<Skel> UnwindSafe for FigureModelCache<Skel>where
    <Skel as Skeleton>::Body: Sized + UnwindSafe,
    <<Skel as Skeleton>::Body as BodySpec>::Manifests: UnwindSafe,
    <<Skel as Skeleton>::Body as BodySpec>::ModelEntryFuture<LOD_COUNT>: UnwindSafe,
    <Skel as Skeleton>::Attr: UnwindSafe,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedAs for T
 
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
    T: CheckedCast<Dst>,
 
fn checked_as<Dst>(self) -> Option<Dst>where
    T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
    Src: CheckedCast<Dst>,
 
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
    Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
 
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
§impl<T> Conv for T
 
impl<T> Conv for T
§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>
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>) -> Rc<dyn Any>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
 
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)
 
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 T
 
impl<T> DowncastSync for T
§impl<T> FmtForward for T
 
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
fn fmt_list(self) -> FmtList<Self>where
    &'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<S> FromSample<S> for S
 
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> GetSetFdFlags for T
 
impl<T> GetSetFdFlags for T
§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
    T: AsFilelike,
 
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
    T: AsFilelike,
Query the “status” flags for the 
self file descriptor.§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
    T: AsFilelike,
 
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
    T: AsFilelike,
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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§impl<'src, T> IntoMaybe<'src, T> for Twhere
    T: 'src,
 
impl<'src, T> IntoMaybe<'src, T> for Twhere
    T: 'src,
§impl<F, T> IntoSample<T> for Fwhere
    T: FromSample<F>,
 
impl<F, T> IntoSample<T> for Fwhere
    T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
    Dst: LosslessTryFrom<Src>,
 
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
    Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
 
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
    Dst: LossyFrom<Src>,
 
impl<Src, Dst> LossyInto<Dst> for Srcwhere
    Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
 
fn lossy_into(self) -> Dst
Performs the conversion.
Source§impl<T> OverflowingAs for T
 
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
    T: OverflowingCast<Dst>,
 
fn overflowing_as<Dst>(self) -> (Dst, bool)where
    T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
    Src: OverflowingCast<Dst>,
 
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
    Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
 
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
§impl<T> Pipe for Twhere
    T: ?Sized,
 
impl<T> Pipe for Twhere
    T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
 
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    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) -> Rwhere
    R: 'a,
 
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    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) -> Rwhere
    R: 'a,
 
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    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
 
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R,
) -> R
 
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
 
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
 
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
 
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows 
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> Pointee for T
 
impl<T> Pointee for T
Source§impl<T> SaturatingAs for T
 
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
    T: SaturatingCast<Dst>,
 
fn saturating_as<Dst>(self) -> Dstwhere
    T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
    Src: SaturatingCast<Dst>,
 
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
    Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
 
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<Context> SubContext<Context> for Context
 
impl<Context> SubContext<Context> for Context
fn sub_context(self) -> Context
§impl<T> Tap for T
 
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
 
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the 
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
 
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the 
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
 
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the 
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
 
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the 
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
 
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the 
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
 
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the 
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
 
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
 
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
 
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
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
 
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
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
 
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
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
 
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
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
 
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls 
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T, U> ToSample<U> for Twhere
    U: FromSample<T>,
 
impl<T, U> ToSample<U> for Twhere
    U: FromSample<T>,
fn to_sample_(self) -> U
§impl<T> TryConv for T
 
impl<T> TryConv for T
Source§impl<T> UnwrappedAs for T
 
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
    T: UnwrappedCast<Dst>,
 
fn unwrapped_as<Dst>(self) -> Dstwhere
    T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
    Src: UnwrappedCast<Dst>,
 
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
    Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
 
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
§impl<T> WithSubscriber for T
 
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
    S: Into<Dispatch>,
 
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
    S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
 
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WrappingAs for T
 
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
    T: WrappingCast<Dst>,
 
fn wrapping_as<Dst>(self) -> Dstwhere
    T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
    Src: WrappingCast<Dst>,
 
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
    Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
 
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.