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

◆ GetChaseResults()

static ChaseResults Terraria.Utils.GetChaseResults ( Vector2 chaserPosition,
float chaserSpeed,
Vector2 runnerPosition,
Vector2 runnerVelocity )
inlinestatic

Definition at line 247 of file Utils.cs.

248 {
249 ChaseResults result = default(ChaseResults);
251 {
252 ChaseResults result2 = default(ChaseResults);
253 result2.InterceptionHappens = true;
254 result2.InterceptionPosition = chaserPosition;
255 result2.InterceptionTime = 0f;
256 result2.ChaserVelocity = Vector2.Zero;
257 return result2;
258 }
259 if (chaserSpeed <= 0f)
260 {
261 return default(ChaseResults);
262 }
264 float num = value.Length();
265 float num2 = runnerVelocity.Length();
266 if (num2 == 0f)
267 {
268 result.InterceptionTime = num / chaserSpeed;
269 result.InterceptionPosition = runnerPosition;
270 }
271 else
272 {
273 float a = chaserSpeed * chaserSpeed - num2 * num2;
274 float b = 2f * Vector2.Dot(value, runnerVelocity);
275 float c = (0f - num) * num;
277 {
278 return default(ChaseResults);
279 }
280 if (result3 < 0f && result4 < 0f)
281 {
282 return default(ChaseResults);
283 }
284 if (result3 > 0f && result4 > 0f)
285 {
286 result.InterceptionTime = Math.Min(result3, result4);
287 }
288 else
289 {
290 result.InterceptionTime = Math.Max(result3, result4);
291 }
292 result.InterceptionPosition = runnerPosition + runnerVelocity * result.InterceptionTime;
293 }
294 result.ChaserVelocity = (result.InterceptionPosition - chaserPosition) / result.InterceptionTime;
295 result.InterceptionHappens = true;
296 return result;
297 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static bool SolveQuadratic(float a, float b, float c, out float result1, out float result2)
Definition Utils.cs:306
static float Dot(Vector2 value1, Vector2 value2)
Definition Vector2.cs:121

References Microsoft.Xna.Framework.Vector2.Dot(), Terraria.Utils.ChaseResults.InterceptionTime, System.Math.Max(), System.Math.Min(), Terraria.Utils.SolveQuadratic(), System.value, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.NPC.AI_003_Fighters(), Terraria.Projectile.AI_066_TryInterceptingTarget(), and Terraria.Player.OnHit().