源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

86 строки
2.5 KiB

4 недель назад
  1. BesselAnimManager = BesselAnimManager or BaseClass()
  2. function BesselAnimManager:__init()
  3. BesselAnimManager.Instance = self
  4. -- obj = {
  5. -- start_pos
  6. -- key_pos
  7. -- end_pos
  8. -- start_time
  9. -- total_time
  10. -- update_func
  11. -- }
  12. self.obj_list = {}
  13. self.obj_index = 1
  14. Runner.Instance:AddRunObj(self, 3)
  15. end
  16. function BesselAnimManager:getInstance()
  17. if BesselAnimManager.Instance==nil then
  18. BesselAnimManager.New()
  19. end
  20. return BesselAnimManager.Instance
  21. end
  22. function BesselAnimManager:__delete()
  23. for id, obj in pairs(self.obj_list) do
  24. obj.update_func(1, obj.end_pos)
  25. end
  26. self.obj_list = {}
  27. end
  28. --[[
  29. /**
  30. *线Remove
  31. * @param start_pos
  32. * @param end_pos
  33. * @param total_time
  34. * @param update_func (p, pos)
  35. * @param key_p 线011
  36. * @param key_dist 线线
  37. */ ]]
  38. function BesselAnimManager:AddBesselAnimNoKey(start_pos, end_pos, total_time, update_func, key_p, key_dist)
  39. key_p = key_p or 0.5
  40. key_dist = key_dist or (Vector2.Magnitude((start_pos - end_pos)) / 3)
  41. local key_pos = GameMath.GetVerticlePoint(start_pos, end_pos, key_p, key_dist)
  42. return self:AddBesselAnimWithKey(start_pos, key_pos, end_pos, total_time, update_func)
  43. end
  44. --[[
  45. /**
  46. *线Remove
  47. * @param start_pos
  48. * @param key_pos
  49. * @param end_pos
  50. * @param total_time
  51. * @param update_func (p, pos)
  52. */ ]]
  53. function BesselAnimManager:AddBesselAnimWithKey(start_pos, key_pos, end_pos, total_time, update_func)
  54. local obj = {
  55. start_pos = start_pos,
  56. key_pos = key_pos,
  57. end_pos = end_pos,
  58. start_time = Status.NowTime,
  59. total_time = total_time,
  60. update_func = update_func
  61. }
  62. self.obj_list[self.obj_index] = obj
  63. self.obj_index = self.obj_index + 1
  64. return self.obj_index - 1
  65. end
  66. function BesselAnimManager:Update(now_time, elapsed_time)
  67. for id, obj in pairs(self.obj_list) do
  68. local p = (now_time - obj.start_time) / obj.total_time
  69. if p > 1 then
  70. obj.update_func(p, obj.end_pos)
  71. self.obj_list[id] = nil
  72. else
  73. local posx,pos_y = ParticleBessel.GetCurvePoint(obj.start_pos, obj.key_pos, obj.end_pos, p)
  74. obj.update_func(p, posx, pos_y)
  75. end
  76. end
  77. end