RequestSavePathCommand.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace LLM.Editor.Commands
  4. {
  5. [System.Serializable]
  6. public class RequestSavePathParams
  7. {
  8. public string title;
  9. public string defaultName;
  10. public string extension;
  11. }
  12. public class RequestSavePathCommand : ICommand
  13. {
  14. private readonly RequestSavePathParams _params;
  15. public const string CONTEXT_KEY = "lastSavePath";
  16. public RequestSavePathCommand(string jsonParams)
  17. {
  18. _params = JsonUtility.FromJson<RequestSavePathParams>(jsonParams);
  19. }
  20. public void Execute(Data.CommandContext context)
  21. {
  22. var path = EditorUtility.SaveFilePanel(_params.title, "Assets/", _params.defaultName, _params.extension);
  23. if (string.IsNullOrEmpty(path)) return;
  24. // We need a relative path for AssetDatabase
  25. var relativePath = "Assets" + path[Application.dataPath.Length..];
  26. context.transientData[CONTEXT_KEY] = relativePath;
  27. Debug.Log($"[RequestSavePathCommand] User selected path: {relativePath}");
  28. }
  29. }
  30. }