ImageMoveContainer.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  4. using Fort23.UTool;
  5. using UnityEngine;
  6. public class ImageMoveContainer
  7. {
  8. protected List<ImageMove> allImageMove = new List<ImageMove>();
  9. public void AddACurve(Vector2 startPos, Vector2 target, float delay, float speed, GameObjectPool gameObjectPool,System.Action<ImageMove> finishCallBack = null,
  10. AnimationCurve ui_showSize = null, AnimationCurve ui_moveSize = null, AnimationCurve ui_moveSpped = null)
  11. {
  12. ACurve aCurve = new ACurve();
  13. CurveInfo curveInfo = new CurveInfo();
  14. Vector3 p = startPos + (startPos - target).normalized * 1;
  15. Vector3 moveTargetPos = new Vector3(p.x + Random.Range(-0, 0),
  16. p.y + Random.Range(-0, 0));
  17. Vector2 newStartPos = moveTargetPos;
  18. curveInfo.t = newStartPos.x;
  19. curveInfo.v = newStartPos.y;
  20. curveInfo.BSLt = 0;
  21. float x = Random.Range(-10, 10) * 30;
  22. Vector3 normal = (target - newStartPos).normalized;
  23. normal = new Vector3(Random.Range(-100, 100), Random.Range(-100, 100));
  24. curveInfo.it = normal.x + x + curveInfo.t;
  25. curveInfo.ot = normal.y + curveInfo.v + 10;
  26. CurveInfo curveInfo2 = new CurveInfo();
  27. curveInfo2.t = target.x;
  28. curveInfo2.v = target.y;
  29. Vector3 normal2 = (newStartPos - target).normalized;
  30. curveInfo2.it = normal2.x + x + curveInfo2.t;
  31. curveInfo2.ot = normal2.y + curveInfo2.v + 10;
  32. curveInfo2.BSLt = 1;
  33. aCurve.CurveInfos = new List<CurveInfo>();
  34. aCurve.CurveInfos.Add(curveInfo);
  35. aCurve.CurveInfos.Add(curveInfo2);
  36. aCurve.CurveType = CurveType.Linear;
  37. ImageMove currImageMove = new ImageMove();
  38. currImageMove.SizeCurve = ui_moveSize;
  39. currImageMove.moveSpeed = ui_moveSpped;
  40. gameObjectPool.own.SetActive(false);
  41. currImageMove.GameObjectPool = gameObjectPool;
  42. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  43. currImageMove.moveStartPos = startPos;
  44. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  45. currImageMove.yanChi = delay;
  46. currImageMove.speed = speed;
  47. currImageMove.currAcur = aCurve;
  48. currImageMove.finishCallBack = finishCallBack;
  49. allImageMove.Add(currImageMove);
  50. StaticUpdater.Instance.RemoveRenderUpdateCallBack(RenderUpdateCallBack);
  51. StaticUpdater.Instance.AddRenderUpdateCallBack(RenderUpdateCallBack);
  52. }
  53. public void RenderUpdateCallBack()
  54. {
  55. for (int i = 0; i < allImageMove.Count; i++)
  56. {
  57. ImageMove imageMove = allImageMove[i];
  58. if (imageMove.Update())
  59. {
  60. Dispose();
  61. // allImageMove.RemoveAt(i);
  62. // imageMove.GameObjectPool.own.SetActive(false);
  63. i--;
  64. }
  65. }
  66. }
  67. public void Dispose()
  68. {
  69. for (int i = 0; i < allImageMove.Count; i++)
  70. {
  71. ImageMove imageMove = allImageMove[i];
  72. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  73. allImageMove.RemoveAt(i);
  74. i--;
  75. }
  76. StaticUpdater.Instance.RemoveRenderUpdateCallBack(RenderUpdateCallBack);
  77. }
  78. }