설비 KPI 기능 수정
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user