pub struct Sprite {
pub animations: SpriteAnimations,
/* private fields */
}
Expand description
A sprite is a renderable graphic with optional animations.
Cloning a sprite is cheap. When cloning, the animations will be shared between all clones of the sprite, but each sprite will track its current frame/tag independently.
Fields§
§animations: SpriteAnimations
The animations that form this sprite.
Implementations§
source§impl Sprite
impl Sprite
sourcepub const fn new(animations: SpriteAnimations) -> Self
pub const fn new(animations: SpriteAnimations) -> Self
Returns a new sprite with animations
.
sourcepub fn merged<S: Into<String>, I: IntoIterator<Item = (S, Self)>>(
source: I
) -> Self
pub fn merged<S: Into<String>, I: IntoIterator<Item = (S, Self)>>( source: I ) -> Self
For merging multiple Sprites that have no tags within them
sourcepub fn single_frame(texture: SharedTexture) -> Self
pub fn single_frame(texture: SharedTexture) -> Self
Creates an instance from a texture. This creates a SpriteAnimation
with no tag and a single frame.
sourcepub fn load_aseprite_json(
raw_json: &str,
texture: impl Into<ShareableTexture>
) -> Result<Self, SpriteParseError>
pub fn load_aseprite_json( raw_json: &str, texture: impl Into<ShareableTexture> ) -> Result<Self, SpriteParseError>
Loads Aseprite JSON export format, when using the correct settings.
For the JSON data, use the Hash export option (default), and use either
spaces or underscores (_) inbetween the fields in the name. Ensure
{frame}
is the last field in the name before the extension. E.g.,
{tag}_{frame}.{extension}
§Errors
Returns an error when raw_json
does not match the expected format.
sourcepub fn set_current_tag<S: Into<String>>(
&mut self,
tag: Option<S>
) -> Result<(), InvalidSpriteTag>
pub fn set_current_tag<S: Into<String>>( &mut self, tag: Option<S> ) -> Result<(), InvalidSpriteTag>
Sets the current tag for the animation. If the tag currently matches, nothing will happen. If it is a new tag, the current frame and animation direction will be switched to the values from the new tag.
§Errors
Returns an error if tag
is not a valid animation tag.
sourcepub fn current_tag(&self) -> Option<&str>
pub fn current_tag(&self) -> Option<&str>
Returns the current tag.
sourcepub fn get_frame(
&mut self,
elapsed: Option<Duration>
) -> Result<SpriteSource, InvalidSpriteTag>
pub fn get_frame( &mut self, elapsed: Option<Duration> ) -> Result<SpriteSource, InvalidSpriteTag>
Gets the current frame after advancing the animation for elapsed
duration. If you need to invoke this multiple times in a single frame,
pass None
on subsequent calls. In general, you should clone sprites
rather than reuse them. Kludgine ensures that your texture and animation
data will be shared and not cloned.
§Errors
Returns an error the current animation tag does not match any defined animation.
sourcepub fn current_frame(&self) -> Result<SpriteSource, InvalidSpriteTag>
pub fn current_frame(&self) -> Result<SpriteSource, InvalidSpriteTag>
Retrieve the current animation frame, if set and valid.
§Errors
Returns an error the current animation tag does not match any defined animation.
sourcepub fn remaining_frame_duration(
&self
) -> Result<Option<Duration>, InvalidSpriteTag>
pub fn remaining_frame_duration( &self ) -> Result<Option<Duration>, InvalidSpriteTag>
Returns the amount of time remaining until the next frame is due to be shown for this sprite. Can be used to calculate redraws more efficiently if you’re not rendering at a constant framerate.
§Errors
Returns an error the current animation tag does not match any defined animation.
Trait Implementations§
source§impl From<SpriteAnimations> for Sprite
impl From<SpriteAnimations> for Sprite
source§fn from(animations: SpriteAnimations) -> Self
fn from(animations: SpriteAnimations) -> Self
Auto Trait Implementations§
impl Freeze for Sprite
impl !RefUnwindSafe for Sprite
impl Send for Sprite
impl Sync for Sprite
impl Unpin for Sprite
impl !UnwindSafe for Sprite
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar> ) -> T
self
into C
, using the provided parameters.§impl<A> Cast for A
impl<A> Cast for A
source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> 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>
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<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.§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, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar> ) -> T
self
into C
, using the provided parameters.source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
source§fn into_color(self) -> U
fn into_color(self) -> U
source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more