/// ShakeSettings contains all properties needed for a shake or punch (frequency, strength per axis, duration, etc.). Can be serialized and tweaked from the Inspector.<br/>
/// Shake methods are: Tween.ShakeLocalPosition(), Tween.ShakeLocalRotation(), Tween.ShakeScale(), and Tween.ShakeCustom().<br/><br/>
/// Punch is a special case of a shake that a has a punch 'direction'. The punched value will oscillate back and forth in the direction of a punch.<br/>
/// Punch methods are: Tween.PunchLocalPosition(), Tween.PunchLocalRotation(), Tween.PunchScale(), and Tween.PunchCustom().<br/>
/// </summary>
[Serializable]
publicstructShakeSettings{
internalconstfloatdefaultFrequency=10;
[Tooltip("Strength is applied per-axis in local space coordinates.\n\n"+
"Shakes: the strongest strength component will be used as the main frequency axis. Shakes on secondary axes happen randomly instead of following the frequency.\n\n"+
"Strength is measured in units (position/scale) or Euler angles (rotation).")]
publicVector3strength;
publicfloatduration;
[Tooltip("Number of shakes per second.")]
publicfloatfrequency;
[Tooltip("With enabled falloff shake starts at the highest strength and fades to the end.")]
publicboolenableFalloff;
[Tooltip("Falloff ease is inverted to achieve the effect of shake 'fading' over time. Typically, eases go from 0 to 1, but falloff ease goes from 1 to 0.\n\n"+
"Default is Ease.Linear.\n\n"+
"Set to "+nameof(Ease)+"."+nameof(Ease.Custom)+" to have manual control over shake's 'strength' over time.")]
publicEasefalloffEase;
[Tooltip("Shake's 'strength' over time.")]
[CanBeNull]publicAnimationCurvestrengthOverTime;
[Tooltip("Represents how asymmetrical the shake is.\n\n"+
"'0' means the shake is symmetrical around the initial value.\n\n"+
"'1' means the shake is asymmetrical and will happen between the initial position and the value of the '"+nameof(strength)+"' vector.\n\n"+
"When used with punches, can be treated as the resistance to 'recoil': '0' is full recoil, '1' is no recoil.")]