ImageMoveContainer.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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,
  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.BSL;
  37. ImageMove currImageMove = new ImageMove();
  38. currImageMove.SizeCurve = ui_moveSize;
  39. currImageMove.moveSpeed = ui_moveSpped;
  40. // currImageMove.ShowSizeCurve = ui_showSize;
  41. // currImageMove.showSizeSpeed = 10;
  42. // GameObjectPool gameObjectPool =
  43. // GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(moveIcon, "moveIcon");
  44. gameObjectPool.own.SetActive(false);
  45. currImageMove.GameObjectPool = gameObjectPool;
  46. // gameObjectPool.own.GetComponent<Image>().icon_name = itemConfig.icon;
  47. currImageMove.transform = gameObjectPool.own.GetComponent<RectTransform>();
  48. currImageMove.moveStartPos = startPos;
  49. currImageMove.moveTargetPos = moveTargetPos;
  50. // currImageMove.transform.SetParent(root);
  51. currImageMove.transform.anchoredPosition = currImageMove.moveStartPos;
  52. currImageMove.yanChi = delay;
  53. currImageMove.speed = speed;
  54. currImageMove.currAcur = aCurve;
  55. allImageMove.Add(currImageMove);
  56. }
  57. public void RenderUpdateCallBack()
  58. {
  59. for (int i = 0; i < allImageMove.Count; i++)
  60. {
  61. ImageMove imageMove = allImageMove[i];
  62. if (imageMove.Update())
  63. {
  64. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  65. allImageMove.RemoveAt(i);
  66. i--;
  67. }
  68. }
  69. }
  70. public void Dispose()
  71. {
  72. for (int i = 0; i < allImageMove.Count; i++)
  73. {
  74. ImageMove imageMove = allImageMove[i];
  75. GObjectPool.Instance.Recycle(imageMove.GameObjectPool);
  76. allImageMove.RemoveAt(i);
  77. i--;
  78. }
  79. }
  80. }