Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CreateMerged() [2/2]

static void Microsoft.Xna.Framework.BoundingSphere.CreateMerged ( ref BoundingSphere original,
ref BoundingSphere additional,
out BoundingSphere result )
inlinestatic

Definition at line 91 of file BoundingSphere.cs.

92 {
93 Vector3.Subtract(ref additional.Center, ref original.Center, out var result2);
94 float num = result2.Length();
95 float radius = original.Radius;
96 float radius2 = additional.Radius;
97 if (radius + radius2 >= num)
98 {
99 if (radius - radius2 >= num)
100 {
101 result = original;
102 return;
103 }
104 if (radius2 - radius >= num)
105 {
106 result = additional;
107 return;
108 }
109 }
110 Vector3 vector = result2 * (1f / num);
111 float num2 = MathHelper.Min(0f - radius, num - radius2);
112 float num3 = MathHelper.Max(radius, num + radius2);
113 float num4 = (num3 - num2) * 0.5f;
114 result.Center = original.Center + vector * (num4 + num2);
115 result.Radius = num4;
116 }

References Microsoft.Xna.Framework.MathHelper.Max(), Microsoft.Xna.Framework.MathHelper.Min(), and Microsoft.Xna.Framework.Vector3.Subtract().