From bb6c159adf3670f2df785b624c8ebab3dcd83f2a Mon Sep 17 00:00:00 2001 From: SOOBEEN HAN Date: Mon, 16 Mar 2026 16:19:38 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=84=A4=EB=B9=84=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=83=81=ED=83=9C=EC=9D=BC=20=EB=95=8C=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=20=EC=84=A4=EB=B9=84=20=ED=81=B4=EB=A6=AD=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ss.uss => EWLKManuEquipDetailPanelUss.uss} | 0 ...a => EWLKManuEquipDetailPanelUss.uss.meta} | 0 ...pUss.uss => EWLKManuEquipInfoPopupUss.uss} | 0 ...eta => EWLKManuEquipInfoPopupUss.uss.meta} | 0 ...tailData.cs => EWLKManuEquipDetailData.cs} | 10 +++++----- ...s.meta => EWLKManuEquipDetailData.cs.meta} | 0 ...ipInfoData.cs => EWLKManuEquipInfoData.cs} | 2 +- ....cs.meta => EWLKManuEquipInfoData.cs.meta} | 0 ...Tracker.cs => EWLKManuEquipInfoTracker.cs} | 12 ++++++------ ....meta => EWLKManuEquipInfoTracker.cs.meta} | 0 ...ndler.cs => EWLKManuEquipSelectHandler.cs} | 19 +++++++++++++------ ...eta => EWLKManuEquipSelectHandler.cs.meta} | 0 ...ilPanel.cs => EWLKManuEquipDetailPanel.cs} | 10 +++++----- ....meta => EWLKManuEquipDetailPanel.cs.meta} | 0 ...InfoPopup.cs => EWLKManuEquipInfoPopup.cs} | 8 ++++---- ...cs.meta => EWLKManuEquipInfoPopup.cs.meta} | 0 16 files changed, 34 insertions(+), 27 deletions(-) rename Assets/Resources/EWLK/UIToolkit/Main/{EWLKEquipDetailPanelUss.uss => EWLKManuEquipDetailPanelUss.uss} (100%) rename Assets/Resources/EWLK/UIToolkit/Main/{EWLKEquipDetailPanelUss.uss.meta => EWLKManuEquipDetailPanelUss.uss.meta} (100%) rename Assets/Resources/EWLK/UIToolkit/Main/{EWLKEquipInfoPopupUss.uss => EWLKManuEquipInfoPopupUss.uss} (100%) rename Assets/Resources/EWLK/UIToolkit/Main/{EWLKEquipInfoPopupUss.uss.meta => EWLKManuEquipInfoPopupUss.uss.meta} (100%) rename Assets/Scripts/EnglewoodLAB/Data/{EWLKEquipDetailData.cs => EWLKManuEquipDetailData.cs} (95%) rename Assets/Scripts/EnglewoodLAB/Data/{EWLKEquipDetailData.cs.meta => EWLKManuEquipDetailData.cs.meta} (100%) rename Assets/Scripts/EnglewoodLAB/Data/{EWLKEquipInfoData.cs => EWLKManuEquipInfoData.cs} (94%) rename Assets/Scripts/EnglewoodLAB/Data/{EWLKEquipInfoData.cs.meta => EWLKManuEquipInfoData.cs.meta} (100%) rename Assets/Scripts/EnglewoodLAB/{EWLKEquipInfoTracker.cs => EWLKManuEquipInfoTracker.cs} (92%) rename Assets/Scripts/EnglewoodLAB/{EWLKEquipInfoTracker.cs.meta => EWLKManuEquipInfoTracker.cs.meta} (100%) rename Assets/Scripts/EnglewoodLAB/{EWLKEquipSelectHandler.cs => EWLKManuEquipSelectHandler.cs} (86%) rename Assets/Scripts/EnglewoodLAB/{EWLKEquipSelectHandler.cs.meta => EWLKManuEquipSelectHandler.cs.meta} (100%) rename Assets/Scripts/EnglewoodLAB/UIToolkit/{EWLKEquipDetailPanel.cs => EWLKManuEquipDetailPanel.cs} (98%) rename Assets/Scripts/EnglewoodLAB/UIToolkit/{EWLKEquipDetailPanel.cs.meta => EWLKManuEquipDetailPanel.cs.meta} (100%) rename Assets/Scripts/EnglewoodLAB/UIToolkit/{EWLKEquipInfoPopup.cs => EWLKManuEquipInfoPopup.cs} (91%) rename Assets/Scripts/EnglewoodLAB/UIToolkit/{EWLKEquipInfoPopup.cs.meta => EWLKManuEquipInfoPopup.cs.meta} (100%) diff --git a/Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipDetailPanelUss.uss b/Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipDetailPanelUss.uss similarity index 100% rename from Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipDetailPanelUss.uss rename to Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipDetailPanelUss.uss diff --git a/Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipDetailPanelUss.uss.meta b/Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipDetailPanelUss.uss.meta similarity index 100% rename from Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipDetailPanelUss.uss.meta rename to Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipDetailPanelUss.uss.meta diff --git a/Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipInfoPopupUss.uss b/Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipInfoPopupUss.uss similarity index 100% rename from Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipInfoPopupUss.uss rename to Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipInfoPopupUss.uss diff --git a/Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipInfoPopupUss.uss.meta b/Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipInfoPopupUss.uss.meta similarity index 100% rename from Assets/Resources/EWLK/UIToolkit/Main/EWLKEquipInfoPopupUss.uss.meta rename to Assets/Resources/EWLK/UIToolkit/Main/EWLKManuEquipInfoPopupUss.uss.meta diff --git a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipDetailData.cs b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipDetailData.cs similarity index 95% rename from Assets/Scripts/EnglewoodLAB/Data/EWLKEquipDetailData.cs rename to Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipDetailData.cs index a92ea999..7eed3412 100644 --- a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipDetailData.cs +++ b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipDetailData.cs @@ -6,11 +6,11 @@ namespace UVC.EnglewoodLAB.Data /// /// 설비 상세 패널 전체 데이터. /// - public class EWLKEquipDetailData + public class EWLKManuEquipDetailData { - public EWLKEquipBasicInfoData BasicInfo { get; } = new(); + public EWLKManuEquipBasicInfoData BasicInfo { get; } = new(); public EWLKQualityInfoData QualityInfo { get; } = new(); - public EWLKEquipOperationData OperationInfo { get; } = new(); + public EWLKManuEquipOperationData OperationInfo { get; } = new(); public EWLKMainMixerData MainMixer { get; } = new(); } @@ -19,7 +19,7 @@ namespace UVC.EnglewoodLAB.Data /// /// 설비 기본 정보 패널 데이터. /// - public class EWLKEquipBasicInfoData + public class EWLKManuEquipBasicInfoData { /// 설비명 public string EquipmentName { get; set; } = "-"; @@ -83,7 +83,7 @@ namespace UVC.EnglewoodLAB.Data /// /// 설비 운영 정보 패널 데이터. /// - public class EWLKEquipOperationData + public class EWLKManuEquipOperationData { /// 공정 정보 public OperationInfoItem ProcessInfo { get; } = new(); diff --git a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipDetailData.cs.meta b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipDetailData.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/Data/EWLKEquipDetailData.cs.meta rename to Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipDetailData.cs.meta diff --git a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipInfoData.cs b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipInfoData.cs similarity index 94% rename from Assets/Scripts/EnglewoodLAB/Data/EWLKEquipInfoData.cs rename to Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipInfoData.cs index b4346059..5f0cc57c 100644 --- a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipInfoData.cs +++ b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipInfoData.cs @@ -18,7 +18,7 @@ namespace UVC.EnglewoodLAB.Data /// /// 설비 정보 팝업에 표시할 데이터. /// - public class EWLKEquipInfoData + public class EWLKManuEquipInfoData { /// 설비 상태 public EquipmentStatus Status { get; set; } = EquipmentStatus.Running; diff --git a/Assets/Scripts/EnglewoodLAB/Data/EWLKEquipInfoData.cs.meta b/Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipInfoData.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/Data/EWLKEquipInfoData.cs.meta rename to Assets/Scripts/EnglewoodLAB/Data/EWLKManuEquipInfoData.cs.meta diff --git a/Assets/Scripts/EnglewoodLAB/EWLKEquipInfoTracker.cs b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipInfoTracker.cs similarity index 92% rename from Assets/Scripts/EnglewoodLAB/EWLKEquipInfoTracker.cs rename to Assets/Scripts/EnglewoodLAB/EWLKManuEquipInfoTracker.cs index bd1aaa41..1f37e7a8 100644 --- a/Assets/Scripts/EnglewoodLAB/EWLKEquipInfoTracker.cs +++ b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipInfoTracker.cs @@ -11,7 +11,7 @@ namespace UVC.EnglewoodLAB /// 이 컴포넌트를 설비 오브젝트(예: Cube)에 부착하고, /// Inspector에서 UIDocument(DynamicUI)를 연결합니다. /// - public class EWLKEquipInfoTracker : MonoBehaviour + public class EWLKManuEquipInfoTracker : MonoBehaviour { [Header("UI")] [Tooltip("팝업을 표시할 UIDocument (DynamicUI 권장)")] @@ -29,8 +29,8 @@ namespace UVC.EnglewoodLAB [SerializeField] private float worldYOffset = 1.0f; // ── 내부 상태 ───────────────────────────────── - private EWLKEquipInfoPopup? _popup; - private EWLKEquipInfoData _data = new(); + private EWLKManuEquipInfoPopup? _popup; + private EWLKManuEquipInfoData _data = new(); private Camera? _mainCamera; private VisualElement? _root; private bool _attached; @@ -43,7 +43,7 @@ namespace UVC.EnglewoodLAB if (uiDocument == null) { - Debug.LogWarning($"[EWLKEquipInfoTracker] {name}: UIDocument가 할당되지 않았습니다."); + Debug.LogWarning($"[EWLKManuEquipInfoTracker] {name}: UIDocument가 할당되지 않았습니다."); return; } @@ -108,7 +108,7 @@ namespace UVC.EnglewoodLAB _root = uiDocument?.rootVisualElement; if (_root == null) return; - _popup = new EWLKEquipInfoPopup(); + _popup = new EWLKManuEquipInfoPopup(); ApplyData(); _root.Add(_popup); _attached = true; @@ -136,7 +136,7 @@ namespace UVC.EnglewoodLAB /// /// 외부에서 설비 데이터를 업데이트합니다. /// - public void UpdateData(EWLKEquipInfoData data) + public void UpdateData(EWLKManuEquipInfoData data) { _data = data; _popup?.SetData(data); diff --git a/Assets/Scripts/EnglewoodLAB/EWLKEquipInfoTracker.cs.meta b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipInfoTracker.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/EWLKEquipInfoTracker.cs.meta rename to Assets/Scripts/EnglewoodLAB/EWLKManuEquipInfoTracker.cs.meta diff --git a/Assets/Scripts/EnglewoodLAB/EWLKEquipSelectHandler.cs b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipSelectHandler.cs similarity index 86% rename from Assets/Scripts/EnglewoodLAB/EWLKEquipSelectHandler.cs rename to Assets/Scripts/EnglewoodLAB/EWLKManuEquipSelectHandler.cs index 0fcf7d87..ccd1a892 100644 --- a/Assets/Scripts/EnglewoodLAB/EWLKEquipSelectHandler.cs +++ b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipSelectHandler.cs @@ -12,7 +12,7 @@ namespace UVC.EnglewoodLAB /// 선택 시 파란 아웃라인을 표시하고, 선택 해제 시 모두 제거합니다. /// [RequireComponent(typeof(Collider))] - public class EWLKEquipSelectHandler : MonoBehaviour + public class EWLKManuEquipSelectHandler : MonoBehaviour { [Header("UI")] [Tooltip("패널을 표시할 UIDocument (DynamicUI 권장)")] @@ -25,9 +25,13 @@ namespace UVC.EnglewoodLAB [Tooltip("아웃라인 색상")] [SerializeField] private Color outlineColor = new(0.2f, 0.5f, 1f, 0.4f); + // ── 상세 패널 활성 상태 (다른 핸들러에서 클릭 차단용) ── + /// 상세 패널이 열려 있는지 여부 + public static bool IsPanelActive { get; private set; } + // ── 내부 상태 ───────────────────────────────── - private EWLKEquipDetailPanel? _panel; - private EWLKEquipDetailData _data = new(); + private EWLKManuEquipDetailPanel? _panel; + private EWLKManuEquipDetailData _data = new(); private GameObject? _outlineObject; private bool _selected; private VisualElement? _root; @@ -37,7 +41,7 @@ namespace UVC.EnglewoodLAB /// /// 외부에서 표시할 데이터를 설정합니다. /// - public void SetData(EWLKEquipDetailData data) + public void SetData(EWLKManuEquipDetailData data) { _data = data; _panel?.SetData(data); @@ -57,6 +61,7 @@ namespace UVC.EnglewoodLAB private void OnMouseDown() { if (_selected) return; + if (EWLKPackEquipInfoTracker.IsPanelActive) return; Select(); } @@ -67,6 +72,7 @@ namespace UVC.EnglewoodLAB { if (_selected) return; _selected = true; + IsPanelActive = true; ShowOutline(); ShowPanel(); @@ -77,6 +83,7 @@ namespace UVC.EnglewoodLAB { if (!_selected) return; _selected = false; + IsPanelActive = false; HideOutline(); HidePanel(); @@ -140,14 +147,14 @@ namespace UVC.EnglewoodLAB { if (uiDocument == null) { - Debug.LogWarning($"[EWLKEquipSelectHandler] {name}: UIDocument가 할당되지 않았습니다."); + Debug.LogWarning($"[EWLKManuEquipSelectHandler] {name}: UIDocument가 할당되지 않았습니다."); return; } _root = uiDocument.rootVisualElement; if (_root == null) return; - _panel = new EWLKEquipDetailPanel(); + _panel = new EWLKManuEquipDetailPanel(); _panel.SetData(_data); _panel.OnDeselectClicked += Deselect; _root.Add(_panel); diff --git a/Assets/Scripts/EnglewoodLAB/EWLKEquipSelectHandler.cs.meta b/Assets/Scripts/EnglewoodLAB/EWLKManuEquipSelectHandler.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/EWLKEquipSelectHandler.cs.meta rename to Assets/Scripts/EnglewoodLAB/EWLKManuEquipSelectHandler.cs.meta diff --git a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipDetailPanel.cs b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipDetailPanel.cs similarity index 98% rename from Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipDetailPanel.cs rename to Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipDetailPanel.cs index 97c50753..6c2f4774 100644 --- a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipDetailPanel.cs +++ b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipDetailPanel.cs @@ -12,9 +12,9 @@ namespace UVC.EnglewoodLAB.UIToolkit /// DynamicUI rootVisualElement에 추가하여 사용합니다. /// [UxmlElement] - public partial class EWLKEquipDetailPanel : VisualElement, IDisposable + public partial class EWLKManuEquipDetailPanel : VisualElement, IDisposable { - private const string UssPath = "EWLK/UIToolkit/Main/EWLKEquipDetailPanelUss"; + private const string UssPath = "EWLK/UIToolkit/Main/EWLKManuEquipDetailPanelUss"; /// 선택 해제 버튼 클릭 시 호출 public event Action? OnDeselectClicked; @@ -64,7 +64,7 @@ namespace UVC.EnglewoodLAB.UIToolkit // ──────────────────────────────────────────────── - public EWLKEquipDetailPanel() + public EWLKManuEquipDetailPanel() { var uss = Resources.Load(UssPath); if (uss != null) styleSheets.Add(uss); @@ -168,7 +168,7 @@ namespace UVC.EnglewoodLAB.UIToolkit Add(deselectBtn); // 기본 데이터로 초기화 - SetData(new EWLKEquipDetailData()); + SetData(new EWLKManuEquipDetailData()); } // ── 공개 API ──────────────────────────────────────── @@ -176,7 +176,7 @@ namespace UVC.EnglewoodLAB.UIToolkit /// /// 데이터를 바인딩합니다. /// - public void SetData(EWLKEquipDetailData data) + public void SetData(EWLKManuEquipDetailData data) { // 설비 기본 정보 _equipNameVal.text = data.BasicInfo.EquipmentName; diff --git a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipDetailPanel.cs.meta b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipDetailPanel.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipDetailPanel.cs.meta rename to Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipDetailPanel.cs.meta diff --git a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipInfoPopup.cs b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipInfoPopup.cs similarity index 91% rename from Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipInfoPopup.cs rename to Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipInfoPopup.cs index 4830c3f4..85e37116 100644 --- a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipInfoPopup.cs +++ b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipInfoPopup.cs @@ -10,9 +10,9 @@ namespace UVC.EnglewoodLAB.UIToolkit /// 상태 원(초록/노랑/회색) + 설비명으로 구성됩니다. /// [UxmlElement] - public partial class EWLKEquipInfoPopup : VisualElement + public partial class EWLKManuEquipInfoPopup : VisualElement { - private const string UssPath = "EWLK/UIToolkit/Main/EWLKEquipInfoPopupUss"; + private const string UssPath = "EWLK/UIToolkit/Main/EWLKManuEquipInfoPopupUss"; private static readonly string ClassRoot = "ewlk-equip-popup"; private static readonly string ClassIndicator = "ewlk-equip-popup__indicator"; @@ -24,7 +24,7 @@ namespace UVC.EnglewoodLAB.UIToolkit private readonly VisualElement _indicator; private readonly Label _nameLabel; - public EWLKEquipInfoPopup() + public EWLKManuEquipInfoPopup() { var uss = Resources.Load(UssPath); if (uss != null) styleSheets.Add(uss); @@ -48,7 +48,7 @@ namespace UVC.EnglewoodLAB.UIToolkit /// /// 데이터를 바인딩합니다. /// - public void SetData(EWLKEquipInfoData data) + public void SetData(EWLKManuEquipInfoData data) { _nameLabel.text = data.EquipmentName; diff --git a/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipInfoPopup.cs.meta b/Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipInfoPopup.cs.meta similarity index 100% rename from Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKEquipInfoPopup.cs.meta rename to Assets/Scripts/EnglewoodLAB/UIToolkit/EWLKManuEquipInfoPopup.cs.meta