TimeLineCollisionTriggerSerializtion.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.Collections.Generic;
  2. using Fort23.Core;
  3. using Fort23.UTool;
  4. #if !COMBAT_SERVER
  5. using UnityEngine;
  6. using UnityEngine.Playables;
  7. using UnityEngine.Timeline;
  8. #endif
  9. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic;
  10. [System.Serializable]
  11. public class TimeLineCollisionTriggerSerializtion : TimeLineAssetSerialization
  12. {
  13. public string guid;
  14. public List<Vector3> allVe = new List<Vector3>();
  15. public Vector3 off;
  16. public string startPosGuid;
  17. public string boneName;
  18. public TimeLineCollisionTriggerSerializtion()
  19. {
  20. }
  21. #if !COMBAT_SERVER
  22. public TimeLineCollisionTriggerSerializtion(PlayableDirector playableDirector, GroupTrack groupTrack,
  23. TimelineClip timelineClip) : base(groupTrack, timelineClip)
  24. {
  25. TimeLineCollisionTriggerAsset animationPlayableAsset =
  26. timelineClip.asset as TimeLineCollisionTriggerAsset;
  27. Object obj = animationPlayableAsset.GameObject.defaultValue;
  28. Debug.Log(obj);
  29. if (animationPlayableAsset.GameObject.Resolve(playableDirector.playableGraph.GetResolver()) != null)
  30. {
  31. GameObject go = animationPlayableAsset.GameObject.Resolve(playableDirector.playableGraph.GetResolver());
  32. BoxCollider2D boxCollider2D = go.GetComponent<BoxCollider2D>();
  33. if (boxCollider2D != null)
  34. {
  35. allVe = new List<Vector3>();
  36. Vector2 Half_size = boxCollider2D.size / 2;
  37. allVe.Add(new Vector3(-Half_size.x, -Half_size.y));
  38. allVe.Add(new Vector3(-Half_size.x, Half_size.y));
  39. allVe.Add(new Vector3(Half_size.x, Half_size.y));
  40. allVe.Add(new Vector3(Half_size.x, -Half_size.y));
  41. off = boxCollider2D.offset+(Vector2)boxCollider2D.transform.localPosition;
  42. }
  43. else
  44. {
  45. EdgeCollider2D edgeCollider2D = go.GetComponent<EdgeCollider2D>();
  46. if (edgeCollider2D != null)
  47. {
  48. allVe = new List<Vector3>();
  49. Vector2[] points = edgeCollider2D.points;
  50. for (int i = 0; i < edgeCollider2D.pointCount; i++)
  51. {
  52. allVe.Add(points[i]);
  53. }
  54. }
  55. off = edgeCollider2D.transform.localPosition;
  56. }
  57. guid = animationPlayableAsset.guid;
  58. startPosGuid = animationPlayableAsset.startPosGuid;
  59. }
  60. }
  61. #endif
  62. public override TimeLineEventLogicBasic CreateLogic()
  63. {
  64. return CObjectPool.Instance.Fetch<TimeLineCollisionTriggerLogic>();
  65. }
  66. }