using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni.RhythmGame; using TMPro; using UnityEngine; using UnityEngine.Serialization; namespace Ichni.Editor { public class DynamicUIAnimatedFloatUnit : DynamicUICompositeUnit { public TMP_InputField startTimeInputField; public TMP_InputField endTimeInputField; public TMP_InputField startValueInputField; public TMP_InputField endValueInputField; public TMP_Dropdown animationCurveTypeDropdown; public override void SetUnit(CompositeParameterWindow window, object itemContent) { compositeParameterWindow = window; AnimatedFloat animatedFloat = (AnimatedFloat)itemContent; startTimeInputField.text = animatedFloat.startTime.ToString(); endTimeInputField.text = animatedFloat.endTime.ToString(); startValueInputField.text = animatedFloat.startValue.ToString(); endValueInputField.text = animatedFloat.endValue.ToString(); animationCurveTypeDropdown.ClearOptions(); List enumNameList = System.Enum.GetNames(typeof(AnimationCurveType)).ToList(); animationCurveTypeDropdown.AddOptions(enumNameList); animationCurveTypeDropdown.value = (int)animatedFloat.animationCurveType; startTimeInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); endTimeInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); startValueInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); endValueInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); animationCurveTypeDropdown.onValueChanged.AddListener(_ => compositeParameterWindow.ApplyParameters()); removeButton.onClick.AddListener(() => { compositeParameterWindow.RemoveUnit(this); compositeParameterWindow.ApplyParameters(); }); } public AnimatedFloat GetValue() { return new AnimatedFloat(float.Parse(startTimeInputField.text), float.Parse(endTimeInputField.text), float.Parse(startValueInputField.text), float.Parse(endValueInputField.text), (AnimationCurveType)animationCurveTypeDropdown.value); } } }