// Token: 0x06001021 RID: 4129 RVA: 0x00071C14 File Offset: 0x0006FE14 private void UpdateSupport() { if (this.m_colliders == null) { this.SetupColliders(); } float num; float num2; float num3; float num4; this.GetMaterialProperties(out num, out num2, out num3, out num4); WearNTear.m_tempSupportPoints.Clear(); WearNTear.m_tempSupportPointValues.Clear(); Vector3 com = this.GetCOM(); float a = 0f; foreach (WearNTear.BoundData boundData in this.m_bounds) { int num5 = Physics.OverlapBoxNonAlloc(boundData.m_pos, boundData.m_size, WearNTear.m_tempColliders, boundData.m_rot, WearNTear.m_rayMask); for (int i = 0; i < num5; i++) { Collider collider = WearNTear.m_tempColliders[i]; if (!this.m_colliders.Contains(collider) && !(collider.attachedRigidbody != null) && !collider.isTrigger) { WearNTear componentInParent = collider.GetComponentInParent <WearNTear>(); if (componentInParent == null) { this.m_support = num; this.m_nview.GetZDO().Set("support", this.m_support); return; } if (componentInParent.m_supports) { float num6 = Vector3.Distance(com, componentInParent.transform.position) + 0.1f; float support = componentInParent.GetSupport(); a = Mathf.Max(a, support - num3 * num6 * support); Vector3 vector = this.FindSupportPoint(com, componentInParent, collider); if (vector.y < com.y + 0.05f) { Vector3 normalized = (vector - com).normalized; if (normalized.y < 0f) { float t = Mathf.Acos(1f - Mathf.Abs(normalized.y)) / 1.5707964f; float num7 = Mathf.Lerp(num3, num4, t); float b = support - num7 * num6 * support; a = Mathf.Max(a, b); } float item = support - num4 * num6 * support; WearNTear.m_tempSupportPoints.Add(vector); WearNTear.m_tempSupportPointValues.Add(item); } } } } } if (WearNTear.m_tempSupportPoints.Count > 0 && WearNTear.m_tempSupportPoints.Count >= 2) { for (int j = 0; j < WearNTear.m_tempSupportPoints.Count; j++) { Vector3 from = WearNTear.m_tempSupportPoints[j] - com; from.y = 0f; for (int k = 0; k < WearNTear.m_tempSupportPoints.Count; k++) { if (j != k) { Vector3 to = WearNTear.m_tempSupportPoints[k] - com; to.y = 0f; if (Vector3.Angle(from, to) >= 100f) { float b2 = (WearNTear.m_tempSupportPointValues[j] + WearNTear.m_tempSupportPointValues[k]) * 0.5f; a = Mathf.Max(a, b2); } } } } } this.m_support = Mathf.Min(a, num); this.m_nview.GetZDO().Set("support", this.m_support); }