클래스명 변경 및 설비 클릭 상태일 때 다른 설비 클릭되지 않도록 변경

This commit is contained in:
SOOBEEN HAN
2026-03-16 16:19:38 +09:00
parent e919db5bf7
commit bb6c159adf
16 changed files with 34 additions and 27 deletions

View File

@@ -6,11 +6,11 @@ namespace UVC.EnglewoodLAB.Data
/// <summary>
/// 설비 상세 패널 전체 데이터.
/// </summary>
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
/// <summary>
/// 설비 기본 정보 패널 데이터.
/// </summary>
public class EWLKEquipBasicInfoData
public class EWLKManuEquipBasicInfoData
{
/// <summary>설비명</summary>
public string EquipmentName { get; set; } = "-";
@@ -83,7 +83,7 @@ namespace UVC.EnglewoodLAB.Data
/// <summary>
/// 설비 운영 정보 패널 데이터.
/// </summary>
public class EWLKEquipOperationData
public class EWLKManuEquipOperationData
{
/// <summary>공정 정보</summary>
public OperationInfoItem ProcessInfo { get; } = new();

View File

@@ -18,7 +18,7 @@ namespace UVC.EnglewoodLAB.Data
/// <summary>
/// 설비 정보 팝업에 표시할 데이터.
/// </summary>
public class EWLKEquipInfoData
public class EWLKManuEquipInfoData
{
/// <summary>설비 상태</summary>
public EquipmentStatus Status { get; set; } = EquipmentStatus.Running;

View File

@@ -11,7 +11,7 @@ namespace UVC.EnglewoodLAB
/// 이 컴포넌트를 설비 오브젝트(예: Cube)에 부착하고,
/// Inspector에서 UIDocument(DynamicUI)를 연결합니다.
/// </summary>
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
/// <summary>
/// 외부에서 설비 데이터를 업데이트합니다.
/// </summary>
public void UpdateData(EWLKEquipInfoData data)
public void UpdateData(EWLKManuEquipInfoData data)
{
_data = data;
_popup?.SetData(data);

View File

@@ -12,7 +12,7 @@ namespace UVC.EnglewoodLAB
/// 선택 시 파란 아웃라인을 표시하고, 선택 해제 시 모두 제거합니다.
/// </summary>
[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);
// ── 상세 패널 활성 상태 (다른 핸들러에서 클릭 차단용) ──
/// <summary>상세 패널이 열려 있는지 여부</summary>
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
/// <summary>
/// 외부에서 표시할 데이터를 설정합니다.
/// </summary>
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);

View File

@@ -12,9 +12,9 @@ namespace UVC.EnglewoodLAB.UIToolkit
/// DynamicUI rootVisualElement에 추가하여 사용합니다.
/// </summary>
[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>
public event Action? OnDeselectClicked;
@@ -64,7 +64,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
// ────────────────────────────────────────────────
public EWLKEquipDetailPanel()
public EWLKManuEquipDetailPanel()
{
var uss = Resources.Load<StyleSheet>(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
/// <summary>
/// 데이터를 바인딩합니다.
/// </summary>
public void SetData(EWLKEquipDetailData data)
public void SetData(EWLKManuEquipDetailData data)
{
// 설비 기본 정보
_equipNameVal.text = data.BasicInfo.EquipmentName;

View File

@@ -10,9 +10,9 @@ namespace UVC.EnglewoodLAB.UIToolkit
/// 상태 원(초록/노랑/회색) + 설비명으로 구성됩니다.
/// </summary>
[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<StyleSheet>(UssPath);
if (uss != null) styleSheets.Add(uss);
@@ -48,7 +48,7 @@ namespace UVC.EnglewoodLAB.UIToolkit
/// <summary>
/// 데이터를 바인딩합니다.
/// </summary>
public void SetData(EWLKEquipInfoData data)
public void SetData(EWLKManuEquipInfoData data)
{
_nameLabel.text = data.EquipmentName;