namespace Sandbox;
partial record class HapticPattern
{
///
/// A haptic pattern that represents a light, soft impact.
///
public static HapticPattern SoftImpact => new(
/* Length */
0.1f,
/* Frequency */
new Curve(
new Curve.Frame( 0.0f, 0.0f ),
new Curve.Frame( 0.5f, 0.5f ),
new Curve.Frame( 1.0f, 0.0f )
),
/* Amplitude */
new Curve(
new Curve.Frame( 0.0f, 0.0f ),
new Curve.Frame( 0.5f, 1.0f ),
new Curve.Frame( 1.0f, 0.0f )
)
);
///
/// A haptic pattern that represents a hard, sudden impact.
///
public static HapticPattern HardImpact => new(
/* Length */
0.25f,
/* Frequency */
new Curve(
new Curve.Frame( 0.5f, 0.0f ),
new Curve.Frame( 1.0f, 0.0f )
),
/* Amplitude */
new Curve(
new Curve.Frame( 0.5f, 1.0f ),
new Curve.Frame( 1.0f, 0.0f )
)
);
///
/// A haptic pattern that represents a constant low-frequency rumble.
///
public static HapticPattern Rumble => new(
/* Length */
0.1f,
/* Frequency */
new Curve(
new Curve.Frame( 0.0f, 0.0f ),
new Curve.Frame( 1.0f, 0.0f )
),
/* Amplitude */
new Curve(
new Curve.Frame( 0.0f, 1.0f ),
new Curve.Frame( 1.0f, 1.0f )
)
);
///
/// A haptic pattern that feels like a heartbeat.
///
public static HapticPattern Heartbeat => new(
/* Length */
1.0f,
/* Frequency */
new Curve(
new Curve.Frame( 0.0f, 0.0f ),
new Curve.Frame( 0.25f, 0.2f ),
new Curve.Frame( 0.5f, 0.0f ),
new Curve.Frame( 0.75f, 0.1f ),
new Curve.Frame( 1.0f, 0.0f )
),
/* Amplitude */
new Curve(
new Curve.Frame( 0.0f, 0.0f ),
new Curve.Frame( 0.25f, 1.0f ),
new Curve.Frame( 0.5f, 0.0f ),
new Curve.Frame( 0.75f, 0.5f ),
new Curve.Frame( 1.0f, 0.0f )
)
);
}