Beatsaber Rust Utilities: A Beatsaber V3 parsing library.
beatsaber beatmap
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 106 lines 3.7 kB view raw
1//! The easing that a [transition](crate::lightshow::TransitionType::Transition) event will use. 2 3use loose_enum::loose_enum; 4use simple_easing::*; 5 6loose_enum! { 7 /// The easing that a [transition](crate::lightshow::TransitionType::Transition) event will use. 8 #[derive(Default, Debug, Clone, Copy, Eq, PartialEq, Hash)] 9 #[cfg_attr( 10 feature = "bevy_reflect", 11 derive(bevy_reflect::Reflect), 12 reflect(Debug, Clone, PartialEq) 13 )] 14 pub enum Easing: i32 { 15 #[default] 16 None = -1, 17 18 Linear = 0, 19 InQuad = 1, 20 OutQuad = 2, 21 InOutQuad = 3, 22 InSine = 4, 23 OutSine = 5, 24 InOutSine = 6, 25 InCubic = 7, 26 OutCubic = 8, 27 InOutCubic = 9, 28 InQuart = 10, 29 OutQuart = 11, 30 InOutQuart = 12, 31 InQuint = 13, 32 OutQuint = 14, 33 InOutQuint = 15, 34 InExpo = 16, 35 OutExpo = 17, 36 InOutExpo = 18, 37 InCirc = 19, 38 OutCirc = 20, 39 InOutCirc = 21, 40 InBack = 22, 41 OutBack = 23, 42 InOutBack = 24, 43 InElastic = 25, 44 OutElastic = 26, 45 InOutElastic = 27, 46 InBounce = 28, 47 OutBounce = 29, 48 InOutBounce = 30, 49 50 /// Note: For [`Easing::ease`], the result will be the same as [`Easing::InOutBack`]. 51 BeatSaberInOutBack = 100, 52 /// Note: For [`Easing::ease`], the result will be the same as [`Easing::InOutElastic`]. 53 BeatSaberInOutElastic = 101, 54 /// Note: For [`Easing::ease`], the result will be the same as [`Easing::InOutBounce`]. 55 BeatSaberInOutBounce = 102, 56 } 57} 58 59impl Easing { 60 /// Applies the relevant easing function. 61 /// 62 /// The Beatsaber specific easing use the standard equivalent instead. 63 /// If the easing is [`None`](Self::None) or [`Undefined`](Self::Undefined), then the result will be zero. 64 pub fn ease(&self, num: f32) -> f32 { 65 match self { 66 Easing::None => 0.0, 67 68 Easing::Linear => linear(num), 69 Easing::InQuad => quad_in(num), 70 Easing::OutQuad => quad_out(num), 71 Easing::InOutQuad => quad_in_out(num), 72 Easing::InSine => sine_in(num), 73 Easing::OutSine => sine_out(num), 74 Easing::InOutSine => sine_in_out(num), 75 Easing::InCubic => cubic_in(num), 76 Easing::OutCubic => cubic_out(num), 77 Easing::InOutCubic => cubic_in_out(num), 78 Easing::InQuart => quart_in(num), 79 Easing::OutQuart => quart_out(num), 80 Easing::InOutQuart => quart_in_out(num), 81 Easing::InQuint => quint_in(num), 82 Easing::OutQuint => quint_out(num), 83 Easing::InOutQuint => quint_in_out(num), 84 Easing::InExpo => expo_in(num), 85 Easing::OutExpo => expo_out(num), 86 Easing::InOutExpo => expo_in_out(num), 87 Easing::InCirc => circ_in(num), 88 Easing::OutCirc => circ_out(num), 89 Easing::InOutCirc => circ_in_out(num), 90 Easing::InBack => back_in(num), 91 Easing::OutBack => back_out(num), 92 Easing::InOutBack => back_in_out(num), 93 Easing::InElastic => elastic_in(num), 94 Easing::OutElastic => elastic_out(num), 95 Easing::InOutElastic => elastic_in_out(num), 96 Easing::InBounce => bounce_in(num), 97 Easing::OutBounce => bounce_out(num), 98 Easing::InOutBounce => bounce_in_out(num), 99 100 Easing::BeatSaberInOutBack => back_in_out(num), 101 Easing::BeatSaberInOutElastic => elastic_in_out(num), 102 Easing::BeatSaberInOutBounce => bounce_in_out(num), 103 Easing::Undefined(_) => 0.0, 104 } 105 } 106}