void Update() { alphaMod = Mathf.MoveTowards(alphaMod, (isEnabled && !aimingAt) ? 1f : 0f, Time.unscaledDeltaTime * 5f); foreach (UIWidget widget in widgets) { widget.alpha = widget.defaultAlpha * alphaMod * osMod; } if (target != null) { BaseStats bs = target.GetComponent <BaseStats>(); targetDead = (bs != null && bs.curHealth <= 0); } if (target == null || targetDead) { isEnabled = false; } if (!isEnabled && alphaMod <= 0f) { return; } curWidth = normalWidth; if (DarkRef.isModernWidescreen) { curWidth = modernWideWidth; } else if (DarkRef.isOldWidescreen) { curWidth = oldWideWidth; } curScale = (scalingEnabled) ? DarkRef.ScaleWithDistance(distance, nearDistance, farDistance, nearScale, farScale) : 1f; if (mainCamera == null) { return; } if (target != null) { m_LastPos = target.position; pos = GetBasicViewportPosition(target.position); } else { pos = GetBasicViewportPosition(m_LastPos); } Vector3 currentTarget = (target == null) ? m_LastPos : target.position; if (pos.z < 0f) { pos = GetAdvancedViewportPosition(currentTarget, 1.0f, pos); } else if (pos.x < 0f) { if (pos.x <= -1.0f) { pos = GetAdvancedViewportPosition(currentTarget, 1.0f, pos); } else { pos = GetAdvancedViewportPosition(currentTarget, 1.0f - (1.0f - Mathf.Abs(pos.x)), pos); } } else if (pos.x > 1.0f) { if (pos.x >= 2.0f) { pos = GetAdvancedViewportPosition(currentTarget, 1.0f, pos); } else { pos = GetAdvancedViewportPosition(currentTarget, 1.0f - (1.0f - (pos.x - 1.0f)), pos); } } else if (pos.y < 0f) { if (pos.y <= -1.0f) { pos = GetAdvancedViewportPosition(currentTarget, 1.0f, pos); } else { pos = GetAdvancedViewportPosition(currentTarget, 1.0f - (1.0f - Mathf.Abs(pos.x)), pos); } } else if (pos.y > 2.0f) { if (pos.y >= 2.0f) { pos = GetAdvancedViewportPosition(currentTarget, 1.0f, pos); } else { pos = GetAdvancedViewportPosition(currentTarget, 1.0f - (1.0f - (pos.y - 1.0f)), pos); } } int markerX = Mathf.RoundToInt(-curWidth + (pos.x * curWidth * 2f)); int markerY = Mathf.RoundToInt(-normalHeight + (pos.y * normalHeight * 2f)); rotation = 0f; if (pos.x > 0f && pos.x < 1f && pos.y > 0f && pos.y < 1f) { markerPos = new Vector2(markerX, markerY); curOffset = Vector2.zero; curTexture = GUITextures[0]; } else if (pos.x <= 0f) { if (pos.y <= 0f) { markerPos = new Vector2(-curWidth, -normalHeight); curOffset = new Vector2(edgeOffset.x, edgeOffset.y); curTexture = GUITextures[3]; rotation = 135f; } else if (pos.y >= 1f) { markerPos = new Vector2(-curWidth, normalHeight); curOffset = new Vector2(edgeOffset.x, -edgeOffset.y); curTexture = GUITextures[3]; rotation = 45f; } else { markerPos = new Vector2(-curWidth, Mathf.Clamp(markerY, -normalHeight, normalHeight)); curOffset = new Vector2(edgeOffset.x, 0f); curTexture = GUITextures[1]; } } else if (pos.x >= 1f) { if (pos.y <= 0f) { markerPos = new Vector2(curWidth, -normalHeight); curOffset = new Vector2(-edgeOffset.x, edgeOffset.y); curTexture = GUITextures[3]; rotation = -135f; } else if (pos.y >= 1f) { markerPos = new Vector2(curWidth, normalHeight); curOffset = new Vector2(-edgeOffset.x, -edgeOffset.y); curTexture = GUITextures[3]; rotation = -45f; } else { markerPos = new Vector2(curWidth, Mathf.Clamp(markerY, -normalHeight, normalHeight)); curOffset = new Vector2(-edgeOffset.x, 0f); curTexture = GUITextures[2]; } } else if (pos.y <= 0f) { markerPos = new Vector2(markerX, -normalHeight); curOffset = new Vector2(0f, edgeOffset.y); curTexture = GUITextures[4]; } else if (pos.y >= 1f) { markerPos = new Vector2(markerX, normalHeight); curOffset = new Vector2(0f, -edgeOffset.y); curTexture = GUITextures[3]; } osMod = (pos.x <= 0f || pos.x >= 1f || pos.y <= 0f || pos.y >= 1f) ? 0.35f : 1f; if (markerTexture.mainTexture != curTexture) { markerTexture.mainTexture = curTexture; } if (pos.x <= textBorder.x) { pivotPoint = UIWidget.Pivot.Left; xText = -12f; } else if (pos.x >= textBorder.y) { pivotPoint = UIWidget.Pivot.Right; xText = 12f; } else { pivotPoint = UIWidget.Pivot.Center; xText = 0f; } if (distanceLabel.pivot != pivotPoint) { distanceLabel.pivot = pivotPoint; descriptionLabel.pivot = pivotPoint; } if (pos.y <= textBorder.z) { yText = 32f; yText2 = 20f; } else { yText = -20f; yText2 = -33f; } offsetReal = Vector2.Lerp(offsetReal, curOffset, Time.unscaledDeltaTime * 5f); distanceLabel.cachedTrans.localPosition = Vector3.Lerp(distanceLabel.cachedTrans.localPosition, new Vector3(xText, yText, 0f), Time.unscaledDeltaTime * 10f); descriptionLabel.cachedTrans.localPosition = Vector3.Lerp(descriptionLabel.cachedTrans.localPosition, new Vector3(xText, yText2, 0f), Time.unscaledDeltaTime * 10f); tr.localPosition = markerPos + offsetReal; markerTexture.cachedTrans.localRotation = Quaternion.Slerp(markerTexture.cachedTrans.localRotation, Quaternion.Euler(0f, 0f, rotation), Time.unscaledDeltaTime * 8f); aimingAt = (ac != null && ac.isAiming && Mathf.Abs(pos.x - 0.5f) < 0.2f && Mathf.Abs(pos.y - 0.5f) < 0.2f); }