클래스명 변경 및 설비 클릭 상태일 때 다른 설비 클릭되지 않도록 변경
This commit is contained in:
@@ -6,11 +6,11 @@ namespace UVC.EnglewoodLAB.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 설비 상세 패널 전체 데이터.
|
/// 설비 상세 패널 전체 데이터.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EWLKEquipDetailData
|
public class EWLKManuEquipDetailData
|
||||||
{
|
{
|
||||||
public EWLKEquipBasicInfoData BasicInfo { get; } = new();
|
public EWLKManuEquipBasicInfoData BasicInfo { get; } = new();
|
||||||
public EWLKQualityInfoData QualityInfo { get; } = new();
|
public EWLKQualityInfoData QualityInfo { get; } = new();
|
||||||
public EWLKEquipOperationData OperationInfo { get; } = new();
|
public EWLKManuEquipOperationData OperationInfo { get; } = new();
|
||||||
public EWLKMainMixerData MainMixer { get; } = new();
|
public EWLKMainMixerData MainMixer { get; } = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ namespace UVC.EnglewoodLAB.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 설비 기본 정보 패널 데이터.
|
/// 설비 기본 정보 패널 데이터.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EWLKEquipBasicInfoData
|
public class EWLKManuEquipBasicInfoData
|
||||||
{
|
{
|
||||||
/// <summary>설비명</summary>
|
/// <summary>설비명</summary>
|
||||||
public string EquipmentName { get; set; } = "-";
|
public string EquipmentName { get; set; } = "-";
|
||||||
@@ -83,7 +83,7 @@ namespace UVC.EnglewoodLAB.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 설비 운영 정보 패널 데이터.
|
/// 설비 운영 정보 패널 데이터.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EWLKEquipOperationData
|
public class EWLKManuEquipOperationData
|
||||||
{
|
{
|
||||||
/// <summary>공정 정보</summary>
|
/// <summary>공정 정보</summary>
|
||||||
public OperationInfoItem ProcessInfo { get; } = new();
|
public OperationInfoItem ProcessInfo { get; } = new();
|
||||||
@@ -18,7 +18,7 @@ namespace UVC.EnglewoodLAB.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 설비 정보 팝업에 표시할 데이터.
|
/// 설비 정보 팝업에 표시할 데이터.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EWLKEquipInfoData
|
public class EWLKManuEquipInfoData
|
||||||
{
|
{
|
||||||
/// <summary>설비 상태</summary>
|
/// <summary>설비 상태</summary>
|
||||||
public EquipmentStatus Status { get; set; } = EquipmentStatus.Running;
|
public EquipmentStatus Status { get; set; } = EquipmentStatus.Running;
|
||||||
@@ -11,7 +11,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
/// 이 컴포넌트를 설비 오브젝트(예: Cube)에 부착하고,
|
/// 이 컴포넌트를 설비 오브젝트(예: Cube)에 부착하고,
|
||||||
/// Inspector에서 UIDocument(DynamicUI)를 연결합니다.
|
/// Inspector에서 UIDocument(DynamicUI)를 연결합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EWLKEquipInfoTracker : MonoBehaviour
|
public class EWLKManuEquipInfoTracker : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("UI")]
|
[Header("UI")]
|
||||||
[Tooltip("팝업을 표시할 UIDocument (DynamicUI 권장)")]
|
[Tooltip("팝업을 표시할 UIDocument (DynamicUI 권장)")]
|
||||||
@@ -29,8 +29,8 @@ namespace UVC.EnglewoodLAB
|
|||||||
[SerializeField] private float worldYOffset = 1.0f;
|
[SerializeField] private float worldYOffset = 1.0f;
|
||||||
|
|
||||||
// ── 내부 상태 ─────────────────────────────────
|
// ── 내부 상태 ─────────────────────────────────
|
||||||
private EWLKEquipInfoPopup? _popup;
|
private EWLKManuEquipInfoPopup? _popup;
|
||||||
private EWLKEquipInfoData _data = new();
|
private EWLKManuEquipInfoData _data = new();
|
||||||
private Camera? _mainCamera;
|
private Camera? _mainCamera;
|
||||||
private VisualElement? _root;
|
private VisualElement? _root;
|
||||||
private bool _attached;
|
private bool _attached;
|
||||||
@@ -43,7 +43,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
|
|
||||||
if (uiDocument == null)
|
if (uiDocument == null)
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"[EWLKEquipInfoTracker] {name}: UIDocument가 할당되지 않았습니다.");
|
Debug.LogWarning($"[EWLKManuEquipInfoTracker] {name}: UIDocument가 할당되지 않았습니다.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
_root = uiDocument?.rootVisualElement;
|
_root = uiDocument?.rootVisualElement;
|
||||||
if (_root == null) return;
|
if (_root == null) return;
|
||||||
|
|
||||||
_popup = new EWLKEquipInfoPopup();
|
_popup = new EWLKManuEquipInfoPopup();
|
||||||
ApplyData();
|
ApplyData();
|
||||||
_root.Add(_popup);
|
_root.Add(_popup);
|
||||||
_attached = true;
|
_attached = true;
|
||||||
@@ -136,7 +136,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 외부에서 설비 데이터를 업데이트합니다.
|
/// 외부에서 설비 데이터를 업데이트합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void UpdateData(EWLKEquipInfoData data)
|
public void UpdateData(EWLKManuEquipInfoData data)
|
||||||
{
|
{
|
||||||
_data = data;
|
_data = data;
|
||||||
_popup?.SetData(data);
|
_popup?.SetData(data);
|
||||||
@@ -12,7 +12,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
/// 선택 시 파란 아웃라인을 표시하고, 선택 해제 시 모두 제거합니다.
|
/// 선택 시 파란 아웃라인을 표시하고, 선택 해제 시 모두 제거합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[RequireComponent(typeof(Collider))]
|
[RequireComponent(typeof(Collider))]
|
||||||
public class EWLKEquipSelectHandler : MonoBehaviour
|
public class EWLKManuEquipSelectHandler : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("UI")]
|
[Header("UI")]
|
||||||
[Tooltip("패널을 표시할 UIDocument (DynamicUI 권장)")]
|
[Tooltip("패널을 표시할 UIDocument (DynamicUI 권장)")]
|
||||||
@@ -25,9 +25,13 @@ namespace UVC.EnglewoodLAB
|
|||||||
[Tooltip("아웃라인 색상")]
|
[Tooltip("아웃라인 색상")]
|
||||||
[SerializeField] private Color outlineColor = new(0.2f, 0.5f, 1f, 0.4f);
|
[SerializeField] private Color outlineColor = new(0.2f, 0.5f, 1f, 0.4f);
|
||||||
|
|
||||||
|
// ── 상세 패널 활성 상태 (다른 핸들러에서 클릭 차단용) ──
|
||||||
|
/// <summary>상세 패널이 열려 있는지 여부</summary>
|
||||||
|
public static bool IsPanelActive { get; private set; }
|
||||||
|
|
||||||
// ── 내부 상태 ─────────────────────────────────
|
// ── 내부 상태 ─────────────────────────────────
|
||||||
private EWLKEquipDetailPanel? _panel;
|
private EWLKManuEquipDetailPanel? _panel;
|
||||||
private EWLKEquipDetailData _data = new();
|
private EWLKManuEquipDetailData _data = new();
|
||||||
private GameObject? _outlineObject;
|
private GameObject? _outlineObject;
|
||||||
private bool _selected;
|
private bool _selected;
|
||||||
private VisualElement? _root;
|
private VisualElement? _root;
|
||||||
@@ -37,7 +41,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 외부에서 표시할 데이터를 설정합니다.
|
/// 외부에서 표시할 데이터를 설정합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetData(EWLKEquipDetailData data)
|
public void SetData(EWLKManuEquipDetailData data)
|
||||||
{
|
{
|
||||||
_data = data;
|
_data = data;
|
||||||
_panel?.SetData(data);
|
_panel?.SetData(data);
|
||||||
@@ -57,6 +61,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
private void OnMouseDown()
|
private void OnMouseDown()
|
||||||
{
|
{
|
||||||
if (_selected) return;
|
if (_selected) return;
|
||||||
|
if (EWLKPackEquipInfoTracker.IsPanelActive) return;
|
||||||
Select();
|
Select();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,6 +72,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
{
|
{
|
||||||
if (_selected) return;
|
if (_selected) return;
|
||||||
_selected = true;
|
_selected = true;
|
||||||
|
IsPanelActive = true;
|
||||||
|
|
||||||
ShowOutline();
|
ShowOutline();
|
||||||
ShowPanel();
|
ShowPanel();
|
||||||
@@ -77,6 +83,7 @@ namespace UVC.EnglewoodLAB
|
|||||||
{
|
{
|
||||||
if (!_selected) return;
|
if (!_selected) return;
|
||||||
_selected = false;
|
_selected = false;
|
||||||
|
IsPanelActive = false;
|
||||||
|
|
||||||
HideOutline();
|
HideOutline();
|
||||||
HidePanel();
|
HidePanel();
|
||||||
@@ -140,14 +147,14 @@ namespace UVC.EnglewoodLAB
|
|||||||
{
|
{
|
||||||
if (uiDocument == null)
|
if (uiDocument == null)
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"[EWLKEquipSelectHandler] {name}: UIDocument가 할당되지 않았습니다.");
|
Debug.LogWarning($"[EWLKManuEquipSelectHandler] {name}: UIDocument가 할당되지 않았습니다.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_root = uiDocument.rootVisualElement;
|
_root = uiDocument.rootVisualElement;
|
||||||
if (_root == null) return;
|
if (_root == null) return;
|
||||||
|
|
||||||
_panel = new EWLKEquipDetailPanel();
|
_panel = new EWLKManuEquipDetailPanel();
|
||||||
_panel.SetData(_data);
|
_panel.SetData(_data);
|
||||||
_panel.OnDeselectClicked += Deselect;
|
_panel.OnDeselectClicked += Deselect;
|
||||||
_root.Add(_panel);
|
_root.Add(_panel);
|
||||||
@@ -12,9 +12,9 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
/// DynamicUI rootVisualElement에 추가하여 사용합니다.
|
/// DynamicUI rootVisualElement에 추가하여 사용합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[UxmlElement]
|
[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";
|
||||||
|
|
||||||
/// <summary>선택 해제 버튼 클릭 시 호출</summary>
|
/// <summary>선택 해제 버튼 클릭 시 호출</summary>
|
||||||
public event Action? OnDeselectClicked;
|
public event Action? OnDeselectClicked;
|
||||||
@@ -64,7 +64,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
|
|
||||||
// ────────────────────────────────────────────────
|
// ────────────────────────────────────────────────
|
||||||
|
|
||||||
public EWLKEquipDetailPanel()
|
public EWLKManuEquipDetailPanel()
|
||||||
{
|
{
|
||||||
var uss = Resources.Load<StyleSheet>(UssPath);
|
var uss = Resources.Load<StyleSheet>(UssPath);
|
||||||
if (uss != null) styleSheets.Add(uss);
|
if (uss != null) styleSheets.Add(uss);
|
||||||
@@ -168,7 +168,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
Add(deselectBtn);
|
Add(deselectBtn);
|
||||||
|
|
||||||
// 기본 데이터로 초기화
|
// 기본 데이터로 초기화
|
||||||
SetData(new EWLKEquipDetailData());
|
SetData(new EWLKManuEquipDetailData());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 공개 API ────────────────────────────────────────
|
// ── 공개 API ────────────────────────────────────────
|
||||||
@@ -176,7 +176,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 데이터를 바인딩합니다.
|
/// 데이터를 바인딩합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetData(EWLKEquipDetailData data)
|
public void SetData(EWLKManuEquipDetailData data)
|
||||||
{
|
{
|
||||||
// 설비 기본 정보
|
// 설비 기본 정보
|
||||||
_equipNameVal.text = data.BasicInfo.EquipmentName;
|
_equipNameVal.text = data.BasicInfo.EquipmentName;
|
||||||
@@ -10,9 +10,9 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
/// 상태 원(초록/노랑/회색) + 설비명으로 구성됩니다.
|
/// 상태 원(초록/노랑/회색) + 설비명으로 구성됩니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[UxmlElement]
|
[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 ClassRoot = "ewlk-equip-popup";
|
||||||
private static readonly string ClassIndicator = "ewlk-equip-popup__indicator";
|
private static readonly string ClassIndicator = "ewlk-equip-popup__indicator";
|
||||||
@@ -24,7 +24,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
private readonly VisualElement _indicator;
|
private readonly VisualElement _indicator;
|
||||||
private readonly Label _nameLabel;
|
private readonly Label _nameLabel;
|
||||||
|
|
||||||
public EWLKEquipInfoPopup()
|
public EWLKManuEquipInfoPopup()
|
||||||
{
|
{
|
||||||
var uss = Resources.Load<StyleSheet>(UssPath);
|
var uss = Resources.Load<StyleSheet>(UssPath);
|
||||||
if (uss != null) styleSheets.Add(uss);
|
if (uss != null) styleSheets.Add(uss);
|
||||||
@@ -48,7 +48,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 데이터를 바인딩합니다.
|
/// 데이터를 바인딩합니다.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetData(EWLKEquipInfoData data)
|
public void SetData(EWLKManuEquipInfoData data)
|
||||||
{
|
{
|
||||||
_nameLabel.text = data.EquipmentName;
|
_nameLabel.text = data.EquipmentName;
|
||||||
|
|
||||||
Reference in New Issue
Block a user