using System; using System.Collections.Generic; using ParadoxNotion.Design; using Sirenix.OdinInspector; using UnityEngine; namespace Reset.Units{ [Serializable] public class UnitMovementData : ICloneable{ // Movement Direction public SettingValue moveSmoothing = new SettingValue(new Vector2(.5f, .5f)); public SettingValue acceleration = new SettingValue(5f); public SettingValue deacceleration = new SettingValue(5f); [SliderField(0,1)] public SettingValue airDirectionDecay = new SettingValue(1f); // TODO: Check default value // Move Speed public SettingValue softening = new SettingValue(1f, defaultSmoothing: 1f); public SettingValue moveSpeed = new SettingValue(15f, defaultSmoothing: 10f); // Jumping [ShowInInspector] public SettingValue jumpPower = new SettingValue(0f); public SettingValue jumpPowerDecay = new SettingValue(3f); // TODO: Check default value // Gravity [ShowInInspector] public SettingValue gravityPower = new SettingValue(1f); public SettingValue gravityMax = new SettingValue(8f); public SettingValue gravityAcceleration = new SettingValue(1f); public SettingValue gravityScale = new SettingValue(1f); // Rotation [ShowInInspector, SerializeReference] public Enum rotateFacing; public SettingValue rotationSpeed = new SettingValue(5f); public SettingValue rotationInputBlending = new SettingValue(.3f); public object Clone(){ return MemberwiseClone(); } public List GetAllSettings(){ var outputList = new List(); IResettableSettingValue[] test = new[]{ moveSmoothing as IResettableSettingValue, }; test[0].SmoothAndEase(); outputList.AddRange(test); return outputList; } } }