LoadEditorManifestOperation.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.IO;
  2. namespace YooAsset
  3. {
  4. internal class LoadEditorManifestOperation : AsyncOperationBase
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. LoadEditorManifest,
  10. CheckDeserializeManifest,
  11. Done,
  12. }
  13. private readonly string _manifestFilePath;
  14. private DeserializeManifestOperation _deserializer;
  15. private ESteps _steps = ESteps.None;
  16. /// <summary>
  17. /// 加载的清单实例
  18. /// </summary>
  19. public PackageManifest Manifest { private set; get; }
  20. public LoadEditorManifestOperation(string manifestFilePath)
  21. {
  22. _manifestFilePath = manifestFilePath;
  23. }
  24. internal override void Start()
  25. {
  26. _steps = ESteps.LoadEditorManifest;
  27. }
  28. internal override void Update()
  29. {
  30. if (_steps == ESteps.None || _steps == ESteps.Done)
  31. return;
  32. if (_steps == ESteps.LoadEditorManifest)
  33. {
  34. if (File.Exists(_manifestFilePath) == false)
  35. {
  36. _steps = ESteps.Done;
  37. Status = EOperationStatus.Failed;
  38. Error = $"Not found simulation manifest file : {_manifestFilePath}";
  39. return;
  40. }
  41. YooLogger.Log($"Load editor manifest file : {_manifestFilePath}");
  42. byte[] bytesData = FileUtility.ReadAllBytes(_manifestFilePath);
  43. _deserializer = new DeserializeManifestOperation(bytesData);
  44. OperationSystem.StartOperation(_deserializer);
  45. _steps = ESteps.CheckDeserializeManifest;
  46. }
  47. if (_steps == ESteps.CheckDeserializeManifest)
  48. {
  49. Progress = _deserializer.Progress;
  50. if (_deserializer.IsDone == false)
  51. return;
  52. if (_deserializer.Status == EOperationStatus.Succeed)
  53. {
  54. Manifest = _deserializer.Manifest;
  55. _steps = ESteps.Done;
  56. Status = EOperationStatus.Succeed;
  57. }
  58. else
  59. {
  60. _steps = ESteps.Done;
  61. Status = EOperationStatus.Failed;
  62. Error = _deserializer.Error;
  63. }
  64. }
  65. }
  66. }
  67. }