using TMPro; using UnityEngine; using UnityEngine.UI; // Affiche la mesure d'un rebord, et la rend modifiable. // // CreateShape le pose au centre de son rebord, lui donne la longueur et lui dit // quel rebord il représente. Un clic ouvre le pavé numérique sur cette mesure ; // à la validation, la longueur repart dans la forme, qui se retrace. // // Hiérarchie attendue : // Btn_measure1 <- ce script + Button // Text (TMP) <- l'étiquette, trouvée toute seule si le champ est vide public class MeasureButton : MonoBehaviour { [Tooltip("L'étiquette à remplir. Vide = premier TMP_Text trouvé sous le bouton.")] [SerializeField] private TMP_Text label; [Tooltip("Le pavé numérique ouvert au clic. Vide = mesure affichée mais non modifiable.")] [SerializeField] private KeyNumber keyboard; [Tooltip("Coché : la mesure est la longueur du rebord, et la modifier change la forme.\nDécoché : la mesure est propre au bouton (hauteur de dosseret) et n'a aucun effet sur la forme.")] [SerializeField] private bool followsEdge = true; [Tooltip("La mesure propre au bouton, en pouces. Ignorée si la mesure suit le rebord.")] [SerializeField] private float inches; private CreateShape _shape; private int _edge; // La mesure affichée, en pouces. public float Inches => inches; // Le rebord mesuré, tel que CreateShape l'a désigné. public int EdgeIndex => _edge; public TMP_Text Label { get { if (label == null) label = GetComponentInChildren(true); return label; } } void Awake() { Button button = GetComponent