67 lines
3.4 KiB
C#
67 lines
3.4 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
|
|
[Title("Move Smoothing"), HideLabel, InlineProperty] public SettingValue<Vector2> moveSmoothing = new SettingValue<Vector2>(new Vector2(.5f, .5f));
|
|
[Title("Acceleration"), HideLabel, InlineProperty] public SettingValue<float> acceleration = new SettingValue<float>(5f);
|
|
[Title("Deacceleration"), HideLabel, InlineProperty] public SettingValue<float> deacceleration = new SettingValue<float>(5f);
|
|
|
|
[SliderField(0,1)]
|
|
[Title("Air Direction Decay"), HideLabel, InlineProperty] public SettingValue<float> airDirectionDecay = new SettingValue<float>(1f); // TODO: Check default value
|
|
|
|
// Move Speed
|
|
[Title("Softening"), HideLabel, InlineProperty] public SettingValue<float> softening = new SettingValue<float>(1f, defaultSmoothing: 1f);
|
|
[Title("Move Speed"), HideLabel, InlineProperty] public SettingValue<float> moveSpeed = new SettingValue<float>(15f, defaultSmoothing: 10f);
|
|
|
|
// Jumping
|
|
// [Title("Jump Power"), HideLabel, InlineProperty] [ShowInInspector] public SettingValue<float> jumpPower = new SettingValue<float>(0f);
|
|
// [Title("Move Smoothing"), HideLabel, InlineProperty] public SettingValue<float> jumpPowerDecay = new SettingValue<float>(3f); // TODO: Check default value
|
|
|
|
// Gravity
|
|
[Title("Gravity Power"), HideLabel, InlineProperty] [ShowInInspector] public SettingValue<float> gravityPower = new SettingValue<float>(1f);
|
|
[Title("Gravity Max"), HideLabel, InlineProperty] public SettingValue<float> gravityMax = new SettingValue<float>(8f);
|
|
[Title("Gravity Acceleration"), HideLabel, InlineProperty] public SettingValue<float> gravityAcceleration = new SettingValue<float>(1f);
|
|
[Title("Gravity Scale"), HideLabel, InlineProperty] public SettingValue<float> gravityScale = new SettingValue<float>(1f);
|
|
|
|
// Rotation
|
|
[Title("Rotate Facing"), HideLabel, InlineProperty] public SettingValue<PlayerFacingDirection> rotateFacing = new SettingValue<PlayerFacingDirection>(initValue: PlayerFacingDirection.Momentum);
|
|
[Title("Rotation Speed"), HideLabel, InlineProperty] public SettingValue<float> rotationSpeed = new SettingValue<float>(5f);
|
|
[Title("Rotation Input Blending"), HideLabel, InlineProperty] public SettingValue<float> rotationInputBlending = new SettingValue<float>(.3f);
|
|
|
|
public object Clone(){
|
|
return MemberwiseClone();
|
|
}
|
|
|
|
public List<IResettableSettingValue> GetAllSettings(){
|
|
var outputList = new List<IResettableSettingValue>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
} |