ShapeEditorCache.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. public class ShapeEditorCache : ScriptableObject
  6. {
  7. static ShapeEditorCache m_Instance;
  8. public static ShapeEditorCache instance
  9. {
  10. get
  11. {
  12. if (!m_Instance)
  13. m_Instance = FindObjectOfType<ShapeEditorCache>();
  14. if (!m_Instance)
  15. {
  16. m_Instance = ScriptableObject.CreateInstance<ShapeEditorCache>();
  17. m_Instance.hideFlags = HideFlags.HideAndDontSave;
  18. }
  19. return m_Instance;
  20. }
  21. }
  22. public static bool IsValid()
  23. {
  24. return m_Instance != null;
  25. }
  26. public static void InvalidateCache()
  27. {
  28. if (m_Instance)
  29. {
  30. Undo.ClearUndo(m_Instance);
  31. DestroyImmediate(m_Instance);
  32. }
  33. }
  34. public static void RecordUndo()
  35. {
  36. RecordUndo(Undo.GetCurrentGroupName());
  37. }
  38. public static void RecordUndo(string undoName)
  39. {
  40. if (m_Instance)
  41. Undo.RegisterCompleteObjectUndo(m_Instance, undoName);
  42. }
  43. public static ISelection GetSelection()
  44. {
  45. if (instance)
  46. return instance.selection;
  47. return null;
  48. }
  49. public static void ClearSelection()
  50. {
  51. if (instance)
  52. instance.selection.Clear();
  53. }
  54. public ISelection selection
  55. {
  56. get { return m_Selection; }
  57. }
  58. public bool rightTangentChanged
  59. {
  60. get { return m_RightTangentChanged; }
  61. set { m_RightTangentChanged = value; }
  62. }
  63. public Vector3 leftTangent
  64. {
  65. get { return m_LeftTangent; }
  66. set { m_LeftTangent = value; }
  67. }
  68. public Vector3 rightTangent
  69. {
  70. get { return m_RightTangent; }
  71. set { m_RightTangent = value; }
  72. }
  73. [SerializeField]
  74. SerializableSelection m_Selection = new SerializableSelection();
  75. [SerializeField]
  76. bool m_RightTangentChanged;
  77. [SerializeField]
  78. Vector3 m_LeftTangent;
  79. [SerializeField]
  80. Vector3 m_RightTangent;
  81. }