diff --git a/src/ff.rs b/src/ff.rs index 0241e52..af78688 100644 --- a/src/ff.rs +++ b/src/ff.rs @@ -111,8 +111,6 @@ impl From for ff_condition_effect { #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum FFEffectKind { - Damper, - Inertia, Constant { /// The strength of the effect. level: i16, @@ -149,6 +147,14 @@ pub enum FFEffectKind { /// Condition data for each axis. condition: [FFCondition; 2], }, + Damper { + /// Condition data for each axis. + condition: [FFCondition; 2], + }, + Inertia { + /// Condition data for each axis. + condition: [FFCondition; 2], + }, Rumble { /// The magnitude of the heavy motor. strong_magnitude: u16, @@ -160,8 +166,8 @@ pub enum FFEffectKind { impl From for FFEffectCode { fn from(other: FFEffectKind) -> Self { match other { - FFEffectKind::Damper => FFEffectCode::FF_DAMPER, - FFEffectKind::Inertia => FFEffectCode::FF_INERTIA, + FFEffectKind::Damper { .. } => FFEffectCode::FF_DAMPER, + FFEffectKind::Inertia { .. } => FFEffectCode::FF_INERTIA, FFEffectKind::Constant { .. } => FFEffectCode::FF_CONSTANT, FFEffectKind::Ramp { .. } => FFEffectCode::FF_RAMP, FFEffectKind::Periodic { .. } => FFEffectCode::FF_PERIODIC, @@ -241,8 +247,6 @@ pub struct FFEffectData { impl From for FFEffectData { fn from(value: sys::ff_effect) -> Self { let kind = match FFEffectCode::from_index(value.type_ as usize) { - FFEffectCode::FF_DAMPER => FFEffectKind::Damper, - FFEffectCode::FF_INERTIA => FFEffectKind::Inertia, FFEffectCode::FF_CONSTANT => { let constant = unsafe { value.u.constant }; @@ -293,6 +297,20 @@ impl From for FFEffectData { condition: [condition[0].into(), condition[1].into()], } } + FFEffectCode::FF_DAMPER => { + let condition = unsafe { value.u.condition }; + + FFEffectKind::Damper { + condition: [condition[0].into(), condition[1].into()], + } + } + FFEffectCode::FF_INERTIA => { + let condition = unsafe { value.u.condition }; + + FFEffectKind::Inertia { + condition: [condition[0].into(), condition[1].into()], + } + } FFEffectCode::FF_RUMBLE => { let rumble = unsafe { value.u.rumble }; @@ -353,7 +371,10 @@ impl From for sys::ff_effect { effect.u.periodic.phase = phase; effect.u.periodic.envelope = envelope.into(); } - FFEffectKind::Spring { condition } | FFEffectKind::Friction { condition } => { + FFEffectKind::Spring { condition } + | FFEffectKind::Friction { condition } + | FFEffectKind::Damper { condition } + | FFEffectKind::Inertia { condition } => { effect.u.condition = [condition[0].into(), condition[1].into()]; } FFEffectKind::Rumble { @@ -363,7 +384,6 @@ impl From for sys::ff_effect { effect.u.rumble.strong_magnitude = strong_magnitude; effect.u.rumble.weak_magnitude = weak_magnitude; } - _ => (), } effect