private void LateUpdate() { if (m_positionRoot != null && m_visible) { Boolean flag = false; Single num = 100f; Single num2 = 0f; Single num3 = 0f; Single num4 = num; m_offsetDir = 1; Single num5 = 0f; Vector3 localPosition = m_positionRoot.transform.localPosition; localPosition.y = 30f; m_positionRoot.transform.localPosition = localPosition; if (m_root.transform.localPosition.y + m_positionRoot.transform.localPosition.y > 570f) { m_offsetDir = -1; Vector3 localPosition2 = m_positionRoot.transform.localPosition; localPosition2.y = 570f - m_root.transform.localPosition.y; m_positionRoot.transform.localPosition = localPosition2; } UpdateCollisionRects(); Int32 num6 = 100; while (HPBarProvider.CheckForCollision(this)) { Single num7 = 8f; Single num8 = (m_collisionOffset + num7) * m_offsetDir; num5 += num8; if (m_offsetDir > 0 && m_root.transform.localPosition.y + m_positionRoot.transform.localPosition.y + num5 > 570f) { flag = true; m_offsetDir = -1; num8 -= num5; num5 = 0f; } else if (!flag && Mathf.Abs(num5) > num4) { if (m_offsetDir > 0) { num2 = num5; num8 = num8 - num5 + num3; num5 = num3; } else { num3 = num5; num8 = num8 - num5 + num2; num5 = num2; num4 += num; } m_offsetDir *= -1; } m_barCollisionBox.y = m_barCollisionBox.y + num8; m_nameCollisionBox.y = m_nameCollisionBox.y + num8; m_buffsCollisionBox.y = m_buffsCollisionBox.y + num8; if (num6-- < 0) { num5 = 0f; Debug.LogWarning("To many HP bar collision checks"); break; } } m_targetYPos = m_positionRoot.transform.localPosition.y + num5; if (m_targetYPos != m_lastYPos) { m_lastYPos += (m_targetYPos - m_lastYPos) * Time.deltaTime * 10f; } if (m_root.transform.localPosition.y + m_lastYPos > 570f) { m_lastYPos = 570f - m_root.transform.localPosition.y; } localPosition = m_positionRoot.transform.localPosition; localPosition.y = m_lastYPos; m_positionRoot.transform.localPosition = localPosition; HPBarProvider.AddForCollision(this); } }