IKManager2DEditorData.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Collections.Generic;
  3. namespace UnityEngine.U2D.IK
  4. {
  5. public partial class IKManager2D : MonoBehaviour
  6. {
  7. #if UNITY_EDITOR
  8. [Serializable]
  9. internal struct SolverEditorData
  10. {
  11. public Color color;
  12. public bool showGizmo;
  13. public static SolverEditorData defaultValue
  14. {
  15. get
  16. {
  17. return new SolverEditorData(){ color = Color.green, showGizmo = true};
  18. }
  19. }
  20. }
  21. [SerializeField]
  22. private List<SolverEditorData> m_SolverEditorData = new List<SolverEditorData>();
  23. void OnEditorDataValidate()
  24. {
  25. var solverDataLength = m_SolverEditorData.Count;
  26. for (int i = solverDataLength; i < m_Solvers.Count; ++i)
  27. {
  28. AddSolverEditorData();
  29. }
  30. }
  31. internal SolverEditorData GetSolverEditorData(Solver2D solver)
  32. {
  33. var index = m_Solvers.FindIndex(x => x == solver);
  34. if (index >= 0)
  35. {
  36. if(index >= m_SolverEditorData.Count)
  37. OnEditorDataValidate();
  38. return m_SolverEditorData[index];
  39. }
  40. return SolverEditorData.defaultValue;
  41. }
  42. void AddSolverEditorData()
  43. {
  44. m_SolverEditorData.Add(new SolverEditorData()
  45. {
  46. color = Color.green,
  47. showGizmo = true
  48. });
  49. }
  50. void RemoveSolverEditorData(Solver2D solver)
  51. {
  52. var index = m_Solvers.FindIndex(x => x == solver);
  53. if(index >= 0)
  54. m_SolverEditorData.RemoveAt(index);
  55. }
  56. #else
  57. void OnEditorDataValidate(){}
  58. void AddSolverEditorData(){}
  59. void RemoveSolverEditorData(Solver2D solver){}
  60. #endif
  61. }
  62. }