ResourceManager.ResourceLoader.LoadResourceTaskBase.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System;
  8. using System.Collections.Generic;
  9. namespace GameFramework.Resource
  10. {
  11. internal sealed partial class ResourceManager : GameFrameworkModule, IResourceManager
  12. {
  13. private sealed partial class ResourceLoader
  14. {
  15. private abstract class LoadResourceTaskBase : TaskBase
  16. {
  17. private static int s_Serial = 0;
  18. private string m_AssetName;
  19. private Type m_AssetType;
  20. private ResourceInfo m_ResourceInfo;
  21. private string[] m_DependencyAssetNames;
  22. private readonly List<object> m_DependencyAssets;
  23. private ResourceObject m_ResourceObject;
  24. private DateTime m_StartTime;
  25. private int m_TotalDependencyAssetCount;
  26. public LoadResourceTaskBase()
  27. {
  28. m_AssetName = null;
  29. m_AssetType = null;
  30. m_ResourceInfo = null;
  31. m_DependencyAssetNames = null;
  32. m_DependencyAssets = new List<object>();
  33. m_ResourceObject = null;
  34. m_StartTime = default(DateTime);
  35. m_TotalDependencyAssetCount = 0;
  36. }
  37. public string AssetName
  38. {
  39. get
  40. {
  41. return m_AssetName;
  42. }
  43. }
  44. public Type AssetType
  45. {
  46. get
  47. {
  48. return m_AssetType;
  49. }
  50. }
  51. public ResourceInfo ResourceInfo
  52. {
  53. get
  54. {
  55. return m_ResourceInfo;
  56. }
  57. }
  58. public ResourceObject ResourceObject
  59. {
  60. get
  61. {
  62. return m_ResourceObject;
  63. }
  64. }
  65. public abstract bool IsScene
  66. {
  67. get;
  68. }
  69. public DateTime StartTime
  70. {
  71. get
  72. {
  73. return m_StartTime;
  74. }
  75. set
  76. {
  77. m_StartTime = value;
  78. }
  79. }
  80. public int LoadedDependencyAssetCount
  81. {
  82. get
  83. {
  84. return m_DependencyAssets.Count;
  85. }
  86. }
  87. public int TotalDependencyAssetCount
  88. {
  89. get
  90. {
  91. return m_TotalDependencyAssetCount;
  92. }
  93. set
  94. {
  95. m_TotalDependencyAssetCount = value;
  96. }
  97. }
  98. public override string Description
  99. {
  100. get
  101. {
  102. return m_AssetName;
  103. }
  104. }
  105. public override void Clear()
  106. {
  107. base.Clear();
  108. m_AssetName = null;
  109. m_AssetType = null;
  110. m_ResourceInfo = null;
  111. m_DependencyAssetNames = null;
  112. m_DependencyAssets.Clear();
  113. m_ResourceObject = null;
  114. m_StartTime = default(DateTime);
  115. m_TotalDependencyAssetCount = 0;
  116. }
  117. public string[] GetDependencyAssetNames()
  118. {
  119. return m_DependencyAssetNames;
  120. }
  121. public List<object> GetDependencyAssets()
  122. {
  123. return m_DependencyAssets;
  124. }
  125. public void LoadMain(LoadResourceAgent agent, ResourceObject resourceObject)
  126. {
  127. m_ResourceObject = resourceObject;
  128. agent.Helper.LoadAsset(resourceObject.Target, AssetName, AssetType, IsScene);
  129. }
  130. public virtual void OnLoadAssetSuccess(LoadResourceAgent agent, object asset, float duration)
  131. {
  132. }
  133. public virtual void OnLoadAssetFailure(LoadResourceAgent agent, LoadResourceStatus status, string errorMessage)
  134. {
  135. }
  136. public virtual void OnLoadAssetUpdate(LoadResourceAgent agent, LoadResourceProgress type, float progress)
  137. {
  138. }
  139. public virtual void OnLoadDependencyAsset(LoadResourceAgent agent, string dependencyAssetName, object dependencyAsset)
  140. {
  141. m_DependencyAssets.Add(dependencyAsset);
  142. }
  143. protected void Initialize(string assetName, Type assetType, int priority, ResourceInfo resourceInfo, string[] dependencyAssetNames, object userData)
  144. {
  145. Initialize(++s_Serial, null, priority, userData);
  146. m_AssetName = assetName;
  147. m_AssetType = assetType;
  148. m_ResourceInfo = resourceInfo;
  149. m_DependencyAssetNames = dependencyAssetNames;
  150. }
  151. }
  152. }
  153. }
  154. }