using System; using System.Collections.Generic; using ParadoxNotion.Design; using Sirenix.OdinInspector; using UnityEngine; namespace Reset.Units{ [Serializable] public class UnitMovementData{ // Movement Direction [Title("Direction Changing Softeness"), HideLabel, InlineProperty] public SettingValue directionChangingSoftness = new SettingValue(1f, defaultSmoothing: 1f); [Title("Direction Spinning Hardness"), HideLabel, InlineProperty] public SettingValue directionSpinningHardness = new SettingValue(3f, defaultSmoothing: 1f); [Title("Directoon Spinning Speed"), HideLabel, InlineProperty] public SettingValue directionSpinningSpeed= new SettingValue(3f, defaultSmoothing: 1f); [SliderField(0,1)] [Title("Air Direction Decay"), HideLabel, InlineProperty] public SettingValue airDirectionDecay = new SettingValue(1f); // TODO: Check default value // Move Speed [Title("Acceleration"), HideLabel, InlineProperty] public SettingValue acceleration = new SettingValue(5f); [Title("Deacceleration"), HideLabel, InlineProperty] public SettingValue deacceleration = new SettingValue(5f); [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 facingDirection = new SettingValue(initValue: PlayerFacingDirection.Momentum); [Title("Rotation Speed"), HideLabel, InlineProperty] public SettingValue rotationSpeed = new SettingValue(5f); public List GetAllSettings(){ var outputList = new List(); IResettableSettingValue[] settings = { directionChangingSoftness, directionSpinningHardness, directionSpinningSpeed, acceleration, deacceleration, airDirectionDecay, moveSpeed, gravityPower, gravityMax, gravityAcceleration, gravityScale, facingDirection, rotationSpeed, }; outputList.AddRange(settings); return outputList; } } }