Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. public WorldPosition PositionAt(float elapsed)
  2. {
  3. float periodFactor = 0;
  4. float amplitudeFactor = 0;
  5. float theta = 0;
  6. float t = 0;
  7. float x = 0;
  8. float y = 0;
  9. float sin = 0;
  10. float cos = 0;
  11. float halfway = 0;
  12. float deflection = 0;
  13.  
  14. WorldPosition p = new WorldPosition(StartPos.X, StartPos.Y);
  15.  
  16. float dist = elapsed * ((float)Desc.Speed / 10000.0f);
  17. float phase = BulletId % 2 == 0 ? 0 : (float)Math.PI;
  18. if (Desc.Wavy)
  19. {
  20. periodFactor = 6 * (float)Math.PI;
  21. amplitudeFactor = (float)Math.PI / 64.0f;
  22. theta = Angle + amplitudeFactor * (float)Math.Sin(phase + periodFactor * (float)elapsed / 1000.0f);
  23. p.X = p.X + dist * (float)Math.Cos(theta);
  24. p.Y = p.Y + dist * (float)Math.Sin(theta);
  25. }
  26. else if (Desc.Parametric)
  27. {
  28. t = (float)elapsed / LifetimeMS * 2 * (float)Math.PI;
  29. x = (float)Math.Sin(t) * (BulletId % 2 == 1 ? 1 : -1);
  30. y = (float)Math.Sin(2 * t) * (BulletId % 4 < 2 ? 1 : -1);
  31. sin = (float)Math.Sin(Angle);
  32. cos = (float)Math.Cos(Angle);
  33. p.X = p.X + (((x * cos) - (y * sin)) * Desc.Magnitude);
  34. p.Y = p.Y + (((x * sin) + (y * cos)) * Desc.Magnitude);
  35. }
  36. else
  37. {
  38. if (Desc.Boomerang)
  39. {
  40. halfway = LifetimeMS * (Desc.Speed / 10000) / 2;
  41. if (dist > halfway)
  42. {
  43. dist = halfway - (dist - halfway);
  44. }
  45. }
  46. p.X = p.X + dist * (float)Math.Cos(Angle);
  47. p.Y = p.Y + dist * (float)Math.Sin(Angle);
  48. if (Desc.Amplitude != 0)
  49. {
  50. deflection = Desc.Amplitude * (float)Math.Sin(phase + (float)elapsed / LifetimeMS * Desc.Frequency * 2 * (float)Math.PI);
  51. p.X = p.X + deflection * (float)Math.Cos(Angle + (float)Math.PI / 2);
  52. p.Y = p.Y + deflection * (float)Math.Sin(Angle + (float)Math.PI / 2);
  53. }
  54. }
  55.  
  56. return p;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement