From d2ab30e7a69bfe7efda63ae75812207377917bd3 Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sun, 30 Mar 2025 18:50:27 +0000 Subject: [PATCH] Merge branch 'Flexalon-UI-Layouts' into develop --- Assets/Flexalon/Samples/Runtime/InputFieldDataSource.cs | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) diff --git a/Assets/Flexalon/Samples/Runtime/InputFieldDataSource.cs b/Assets/Flexalon/Samples/Runtime/InputFieldDataSource.cs new file mode 100644 index 0000000..b9a3ee3 --- /dev/null +++ b/Assets/Flexalon/Samples/Runtime/InputFieldDataSource.cs @@ -0,0 +1,55 @@ +#if UNITY_TMPRO + +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +namespace Flexalon.Samples +{ + // Provides the text of an TMP_InputField as a data source which can be assigned to a FlexalonCloner. + [AddComponentMenu("Flexalon Samples/Input Field Data Source")] + public class InputFieldDataSource : MonoBehaviour, DataSource + { + [SerializeField] + private TMP_InputField _inputField; + public TMP_InputField InputField + { + get => _inputField; + set + { + _inputField = value; + UpdateData(_inputField.text); + } + } + + public event Action DataChanged; + + private List<string> _data = new List<string>(); + public IReadOnlyList<object> Data => _data; + + void OnEnable() + { + _inputField.onValueChanged.AddListener(UpdateData); + UpdateData(_inputField.text); + } + + void OnDisable() + { + _inputField.onValueChanged.RemoveListener(UpdateData); + } + + private void UpdateData(string text) + { + _data.Clear(); + foreach (char c in text) + { + _data.Add(c.ToString()); + } + + DataChanged?.Invoke(); + } + } +} + +#endif \ No newline at end of file -- Gitblit v1.9.3