using System; using System.Collections.Generic; using ParadoxNotion.Design; using Sirenix.OdinInspector; using UnityEngine; namespace Reset.Units{ [Serializable] public class UnitMovementData : ICloneable{ // Movement Direction [Title("Move Smoothing"), HideLabel, InlineProperty] public SettingValue moveSmoothing = new SettingValue(new Vector2(.5f, .5f)); [Title("Acceleration"), HideLabel, InlineProperty] public SettingValue acceleration = new SettingValue(5f); [Title("Deacceleration"), HideLabel, InlineProperty] public SettingValue deacceleration = new SettingValue(5f); [SliderField(0,1)] [Title("Air Direction Decay"), HideLabel, InlineProperty] public SettingValue airDirectionDecay = new SettingValue(1f); // TODO: Check default value // Move Speed [Title("Softening"), HideLabel, InlineProperty] public SettingValue softening = new SettingValue(1f, defaultSmoothing: 1f); [Title("Move Speed"), HideLabel, InlineProperty] public SettingValue moveSpeed = new SettingValue(15f, defaultSmoothing: 10f); // Jumping // [Title("Jump Power"), HideLabel, InlineProperty] [ShowInInspector] public SettingValue jumpPower = new SettingValue(0f); // [Title("Move Smoothing"), HideLabel, InlineProperty] public SettingValue jumpPowerDecay = new SettingValue(3f); // TODO: Check default value // Gravity [Title("Gravity Power"), HideLabel, InlineProperty] [ShowInInspector] public SettingValue gravityPower = new SettingValue(1f); [Title("Gravity Max"), HideLabel, InlineProperty] public SettingValue gravityMax = new SettingValue(8f); [Title("Gravity Acceleration"), HideLabel, InlineProperty] public SettingValue gravityAcceleration = new SettingValue(1f); [Title("Gravity Scale"), HideLabel, InlineProperty] public SettingValue gravityScale = new SettingValue(1f); // Rotation [Title("Rotate Facing"), HideLabel, InlineProperty] public SettingValue rotateFacing = new SettingValue(initValue: PlayerFacingDirection.Momentum); [Title("Rotation Speed"), HideLabel, InlineProperty] public SettingValue rotationSpeed = new SettingValue(5f); [Title("Rotation Input Blending"), HideLabel, InlineProperty] public SettingValue rotationInputBlending = new SettingValue(.3f); public object Clone(){ return MemberwiseClone(); } public List GetAllSettings(){ var outputList = new List(); IResettableSettingValue[] settings = new[]{ moveSmoothing as IResettableSettingValue, acceleration, deacceleration, airDirectionDecay, softening, moveSpeed, // jumpPower, // jumpPowerDecay, gravityPower, gravityMax, gravityAcceleration, gravityScale, rotateFacing, rotationSpeed, rotationInputBlending, }; outputList.AddRange(settings); return outputList; } } }