using Newtonsoft.Json;
using RhythmBase.Components;
using RhythmBase.Components.Easing;
namespace RhythmBase.Events
{
///
/// Represents a new window dance event.
///
public class NewWindowDance : BaseEvent, IEaseEvent
{
///
/// Initializes a new instance of the class.
///
public NewWindowDance()
{
Amplitude = 0f;
Type = EventType.NewWindowDance;
Tab = Tabs.Actions;
}
///
/// Gets or sets the preset.
///
public Presets Preset { get; set; }
///
/// Gets or sets the same preset behavior.
///
public SamePresetBehaviors SamePresetBehavior { get; set; }
///
/// Gets or sets the position.
///
[EaseProperty]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public RDPointE Position { get; set; }
///
/// Gets or sets the reference.
///
public References Reference { get; set; }
///
/// Gets or sets a value indicating whether to use a circle.
///
public bool UseCircle { get; set; }
///
/// Gets or sets the speed.
///
[EaseProperty]
public float Speed { get; set; }
///
/// Gets or sets the amplitude.
///
[EaseProperty]
public float Amplitude { get; set; }
///
/// Gets or sets the amplitude vector.
///
[EaseProperty]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public RDPointE AmplitudeVector { get; set; }
///
/// Gets or sets the angle.
///
[EaseProperty]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public float? Angle { get; set; }
///
/// Gets or sets the frequency.
///
[EaseProperty]
public float Frequency { get; set; }
///
/// Gets or sets the period.
///
[EaseProperty]
public float Period { get; set; }
///
/// Gets or sets the ease type.
///
public EaseTypes EaseType { get; set; }
///
/// Gets or sets the sub ease type.
///
public EaseType SubEase { get; set; }
///
/// Gets or sets the duration.
///
[JsonProperty("easingDuration")]
public float Duration { get; set; }
///
/// Gets or sets the ease.
///
public EaseType Ease { get; set; }
///
/// Gets the event type.
///
public override EventType Type { get; }
///
/// Gets the tab.
///
public override Tabs Tab { get; }
///
/// Represents the presets.
///
public enum Presets
{
///
/// Move preset.
///
Move,
///
/// Sway preset.
///
Sway,
///
/// Wrap preset.
///
Wrap,
///
/// Ellipse preset.
///
Ellipse,
///
/// Shake per preset.
///
ShakePer
}
///
/// Represents the same preset behaviors.
///
public enum SamePresetBehaviors
{
///
/// Reset behavior.
///
Reset,
///
/// Keep behavior.
///
Keep
}
///
/// Represents the references.
///
public enum References
{
///
/// Center reference.
///
Center,
///
/// Edge reference.
///
Edge
}
///
/// Represents the ease types.
///
public enum EaseTypes
{
///
/// Repeat ease type.
///
Repeat,
///
/// Mirror ease type.
///
Mirror,
}
}
}