private IEnumerator UpdateIconCoroutine(SelectBundle bundle, Vector3 destination, Vector3 scale) { var icon = bundle.transform; icon.SetAsFirstSibling(); var ogpos = icon.position; var ogsc = icon.localScale; var time = 0.0f; while (time < transitionTime) { var ratio = time / transitionTime; icon.position = Vector3.Lerp(ogpos, destination, ratio); icon.localScale = Vector3.MoveTowards(ogsc, scale, ratio); time += Time.deltaTime; yield return(null); } icon.position = destination; icon.localScale = scale; }
private void UpdateIcons() { foreach (var s in selections) { if (s.coroutine != null) { StopCoroutine(s.coroutine); } } var selected = PlayerSwitch.instance.selected; var count = selections.Count; SelectBundle first = selections[0]; int firstIndex = 0; for (var i = 0; i < count; i++) { if (selections[i].pc == selected) { first = selections[i]; firstIndex = i; break; } } first.coroutine = StartCoroutine(UpdateIconCoroutine(first, positionMain, Vector3.one)); var j = 0; for (var i = (firstIndex + 1) % count; i != firstIndex; i = (i + 1) % count) { first = selections[i]; first.coroutine = StartCoroutine(UpdateIconCoroutine(first, positionMain + new Vector3(spacing * (j + 1), 0, 0), Vector3.one * imageScale)); j++; } }