설비 상세 대시 보드 기능 추가

This commit is contained in:
정영민
2025-04-24 08:36:29 +09:00
parent 7d48614334
commit cacf21f946
68 changed files with 546245 additions and 48216 deletions

View File

@@ -26,7 +26,8 @@ namespace CHN
public Vector3 originScale;
public float verticalSpacing = 100f;
public Action<Machine> onClickKPI;
public Action<Machine> onClickKPIToMachine;
public Action<SimpleField> onClickKPIToData;
[Range(0.1f, 0.8f)]
public float minScale;
@@ -34,34 +35,38 @@ namespace CHN
public float maxScale;
[Range(0.1f, 2f)]
public float scaleClamp;
public void SetMachineKPI(MachineKPIData machineKPIData)
public void Clear()
{
foreach (var item in machineKPIs)
{
Destroy(item.Value.gameObject);
}
uiElements.Clear();
machineKPIs.Clear();
matchingMachines.Clear();
kpiToMachines.Clear();
}
public void SetMachineKPI(List<SimpleField> machineData)
{
cam = FindSingle<OrbitalController>();
prefab_MachineKPI = Resources.Load<UI_MachineKPI>("Prefabs/UI/PRF_UI_MachineKPI");
foreach (var data in machineKPIData.data.rows)
{
if (machineKPIs.ContainsKey(data.workcd))
continue;
Clear();
foreach (var data in machineData)
{
if (machineKPIs.ContainsKey(data.machineName))
{
machineKPIs[data.machineName].SetData(data);
uiElements.Add(machineKPIs[data.machineName].rectTransform);
continue;
}
var machineKPI = Instantiate(prefab_MachineKPI, transform);
machineKPI.SetData(data);
machineKPI.onClickKPI += OnClickMachineKPI;
machineKPI.name = data.workcd;
machineKPI.name = data.machineName;
machineKPI.SetActive(false);
uiElements.Add(machineKPI.rectTransform);
kpis.Add(machineKPI);
machineKPIs.Add(data.workcd, machineKPI);
machineKPIs.Add(data.machineName, machineKPI);
}
var building = FindSingle<Building>();
@@ -83,38 +88,15 @@ namespace CHN
}
private void OnClickMachineKPI(UI_MachineKPI machineKPI)
{
foreach(var machine in machines)
{
if (machine.machineKPI != null)
{
machine.machineKPI.Shrink();
}
}
machineKPI.transform.SetAsLastSibling();
var currentMachine = kpiToMachines[machineKPI];
current_MachineKPI = machineKPI;
current_MachineKPI.Expand();
current_MachineKPI.transform.SetAsLastSibling();
onClickKPI?.Invoke(currentMachine);
onClickKPIToMachine?.Invoke(currentMachine);
onClickKPIToData?.Invoke(machineKPI.data);
}
private void Update()
{
GroupOverlappingUIElements();
RangeDetection();
RectangleContainsPoint();
}
private void RectangleContainsPoint()
{
if (Input.GetMouseButton(0))
{
if (current_MachineKPI == null)
return;
if(!RectTransformUtility.RectangleContainsScreenPoint(current_MachineKPI.DetailsKPI, Input.mousePosition))
{
current_MachineKPI.Shrink();
current_MachineKPI = null;
}
}
}
public List<RectTransform> uiElements = new List<RectTransform>();
public List<List<RectTransform>> groupedElements = new List<List<RectTransform>>();
@@ -168,6 +150,9 @@ namespace CHN
}
private bool AreRectanglesOverlapping(RectTransform rectA, RectTransform rectB)
{
if (!rectB.gameObject.activeSelf)
return false;
Rect rectAWorld = GetWorldRect(rectA);
Rect rectBWorld = GetWorldRect(rectB);