LocationAttribute.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using UnityEditorInternal;
  3. using UnityEngine;
  4. namespace Unity.Cloud.Collaborate.Common {
  5. [AttributeUsage(AttributeTargets.Class)]
  6. internal sealed class LocationAttribute : Attribute
  7. {
  8. public enum Location { PreferencesFolder, LibraryFolder }
  9. string m_RelativePath;
  10. readonly Location m_Location;
  11. string m_FilePath;
  12. public string FilePath {
  13. get {
  14. if (m_FilePath != null) return m_FilePath;
  15. if (m_RelativePath[0] == '/')
  16. m_RelativePath = m_RelativePath.Substring(1);
  17. if (m_Location == Location.PreferencesFolder)
  18. m_FilePath = $"{InternalEditorUtility.unityPreferencesFolder}/{m_RelativePath}";
  19. else if (m_Location == Location.LibraryFolder)
  20. m_FilePath = $"Library/Collab/{m_RelativePath}";
  21. return m_FilePath;
  22. }
  23. }
  24. public LocationAttribute(string relativePath, Location location)
  25. {
  26. //Guard.ArgumentNotNullOrWhiteSpace(relativePath, "relativePath");
  27. m_RelativePath = relativePath;
  28. m_Location = location;
  29. }
  30. }
  31. }