설비 KPI 기능 수정

This commit is contained in:
정영민
2025-03-12 14:57:35 +09:00
parent 9edc6024ae
commit 2e6c32e3e6
5 changed files with 64 additions and 140 deletions

View File

@@ -22,6 +22,12 @@ namespace CHN
public float radius;
public Vector3 originScale;
[Range(0.1f, 0.5f)]
public float minScale;
[Range(0.5f, 1f)]
public float maxScale;
[Range(0.1f, 2f)]
public float scaleClamp;
public void SetMachineKPI(MachineKPIData machineKPIData)
{
foreach (var item in machineKPIs)
@@ -70,6 +76,7 @@ namespace CHN
}
current_MachineKPI = machineKPI;
current_MachineKPI.Expand();
current_MachineKPI.transform.SetAsLastSibling();
}
private void Update()
{
@@ -91,16 +98,6 @@ namespace CHN
}
}
}
bool Test(Machine machine)
{
Vector3 viewPos = cam.camera.WorldToViewportPoint(machine.centerPos);
if (viewPos.x >= 0 && viewPos.x <= 1 &&viewPos.y >= 0 && viewPos.y <= 1 && viewPos.z > 0)
{
return true;
}
return false;
}
void SettingPos()
{
foreach (var machine in matchingMachines)
@@ -116,36 +113,24 @@ namespace CHN
}
void RangeDetection()
{
var colliders = Physics.OverlapSphere(cam.camera.transform.position, radius);
HashSet<Machine> machinesInRange = new HashSet<Machine>();
var layerMask = LayerMask.GetMask("Camera", "Floor Wall");
var layerMask = LayerMask.GetMask("Camera", "Floor Wall", "Floor Ground");
var currentFloor = FindSingle<Building>().currentFloor;
foreach (var collider in colliders)
{
var machine = collider.GetComponent<Machine>();
if (matchingMachines.Contains(machine))
{
if (machine.GetComponentInParent<Floor>() != currentFloor)
continue;
MachineKPIsActive(machine, layerMask);
var distance = Vector3.Distance(cam.transform.position, machine.centerPos);
var machineKPI = machine.machineKPI;
machineKPI.transform.localScale = !machineKPI.isExpand ? (radius - distance) / radius * originScale : originScale;
}
machinesInRange.Add(machine);
}
var max = cam.option.maxDistance - cam.option.minDistance;
var distance = cam.option.currentDistance;
var distanceScale = (max - distance) / max;
distanceScale *= scaleClamp;
distanceScale = Mathf.Clamp(distanceScale, minScale, maxScale);
foreach (var machine in matchingMachines)
{
if (!machinesInRange.Contains(machine))
{
machine.machineKPI.Deactive();
}
if (machine.GetComponentInParent<Floor>() != currentFloor)
continue;
MachineKPIsActive(machine, layerMask);
var machineKPI = machine.machineKPI;
machineKPI.transform.localScale = originScale * distanceScale;
}
}
void MachineKPIsActive(Machine machine, LayerMask layerMask)
@@ -159,9 +144,6 @@ namespace CHN
if (hitCameraLayer)
{
if (!Test(machine))
return;
machine.machineKPI.Active();
}
else

View File

@@ -22,13 +22,6 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
public bool isExpand;
private float eorate;
public float targetHeight;
public float duration;
private float initialHeight;
private Vector2 initialSizeDelta;
private Vector2 initialPosition;
public Action<UI_MachineKPI> onClickKPI;
public void SetData(KPIData kpiData)
@@ -42,10 +35,6 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
goodqtyrate.SetText(DecimalPointCalculate(kpiData.goodqtyrate).ToString());
porate.SetText(DecimalPointCalculate(kpiData.porate).ToString());
initialSizeDelta = DetailsKPI.sizeDelta;
initialPosition = DetailsKPI.anchoredPosition;
initialHeight = DetailsKPI.rect.height;
DetailsKPI.gameObject.SetActive(false);
}
private float DecimalPointCalculate(string value)
@@ -55,57 +44,6 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
return floatValue;
}
IEnumerator ResizeCoroutine()
{
DefaultKPI.gameObject.SetActive(false);
DetailsKPI.gameObject.SetActive(true);
var elapsedTime = 0f;
while (elapsedTime < duration)
{
var progress = elapsedTime / duration;
var newHeight = Mathf.Lerp(initialHeight, targetHeight, progress);
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight);
var newPosY = Mathf.Lerp(initialPosition.y, initialPosition.y - (targetHeight - initialHeight) / 2f, progress);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY);
elapsedTime += Time.deltaTime;
yield return null;
}
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, targetHeight);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y - (targetHeight - initialHeight) / 2f);
}
IEnumerator ShrinkCoroutine()
{
var elapsedTime = 0f;
var currentHeight = DetailsKPI.rect.height;
var currentPosY = DetailsKPI.anchoredPosition.y;
while (elapsedTime < duration)
{
var progress = elapsedTime / duration;
var newHeight = Mathf.Lerp(currentHeight, initialHeight, progress);
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight);
var newPosY = Mathf.Lerp(currentPosY, initialPosition.y, progress);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY);
elapsedTime += Time.deltaTime;
yield return null;
}
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, initialHeight);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y);
DefaultKPI.gameObject.SetActive(true);
DetailsKPI.gameObject.SetActive(false);
}
public void OnPointerClick(PointerEventData eventData)
{
onClickKPI?.Invoke(this);
@@ -114,8 +52,8 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
{
if (!isExpand)
{
StopAllCoroutines();
StartCoroutine(ResizeCoroutine());
DefaultKPI.gameObject.SetActive(false);
DetailsKPI.gameObject.SetActive(true);
isExpand = true;
}
}
@@ -123,9 +61,8 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
{
if (isExpand)
{
StopAllCoroutines();
StartCoroutine(ShrinkCoroutine());
DefaultKPI.gameObject.SetActive(true);
DetailsKPI.gameObject.SetActive(false);
isExpand = false;
}
}
@@ -134,10 +71,7 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler
gameObject.SetActive(true);
}
public void Deactive()
{
DetailsKPI.sizeDelta = initialSizeDelta;
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y);
{
DefaultKPI.gameObject.SetActive(true);
DetailsKPI.gameObject.SetActive(false);
isExpand = false;