Files
project-reset/Assets/Scripts/Player/UnitMovementData.cs

55 lines
2.2 KiB
C#

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<Vector2> moveSmoothing = new SettingValue<Vector2>(new Vector2(.5f, .5f));
public SettingValue<float> acceleration = new SettingValue<float>(5f);
public SettingValue<float> deacceleration = new SettingValue<float>(5f);
[SliderField(0,1)]
public SettingValue<float> airDirectionDecay = new SettingValue<float>(1f); // TODO: Check default value
// Move Speed
public SettingValue<float> softening = new SettingValue<float>(1f, defaultSmoothing: 1f);
public SettingValue<float> moveSpeed = new SettingValue<float>(15f, defaultSmoothing: 10f);
// Jumping
[ShowInInspector] public SettingValue<float> jumpPower = new SettingValue<float>(0f);
public SettingValue<float> jumpPowerDecay = new SettingValue<float>(3f); // TODO: Check default value
// Gravity
[ShowInInspector] public SettingValue<float> gravityPower = new SettingValue<float>(1f);
public SettingValue<float> gravityMax = new SettingValue<float>(8f);
public SettingValue<float> gravityAcceleration = new SettingValue<float>(1f);
public SettingValue<float> gravityScale = new SettingValue<float>(1f);
// Rotation
[ShowInInspector, SerializeReference] public Enum rotateFacing;
public SettingValue<float> rotationSpeed = new SettingValue<float>(5f);
public SettingValue<float> rotationInputBlending = new SettingValue<float>(.3f);
public object Clone(){
return MemberwiseClone();
}
public List<IResettableSettingValue> GetAllSettings(){
var outputList = new List<IResettableSettingValue>();
IResettableSettingValue[] test = new[]{
moveSmoothing as IResettableSettingValue,
};
test[0].SmoothAndEase();
outputList.AddRange(test);
return outputList;
}
}
}