/GameFramework/Resource/ResourceManager.ResourceLoader.LoadResourceTaskBase.cs

https://github.com/EllanJiang/GameFramework · C# · 188 lines · 159 code · 23 blank · 6 comment · 0 complexity · cc4ade0833bcadeba23fcbfb1c541005 MD5 · raw file

  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2020 Jiang Yin. All rights reserved.
  4. // Homepage: https://gameframework.cn/
  5. // Feedback: mailto:ellan@gameframework.cn
  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 object m_UserData;
  23. private readonly List<object> m_DependencyAssets;
  24. private ResourceObject m_ResourceObject;
  25. private DateTime m_StartTime;
  26. private int m_TotalDependencyAssetCount;
  27. public LoadResourceTaskBase()
  28. {
  29. m_AssetName = null;
  30. m_AssetType = null;
  31. m_ResourceInfo = null;
  32. m_DependencyAssetNames = null;
  33. m_UserData = null;
  34. m_DependencyAssets = new List<object>();
  35. m_ResourceObject = null;
  36. m_StartTime = default(DateTime);
  37. m_TotalDependencyAssetCount = 0;
  38. }
  39. public string AssetName
  40. {
  41. get
  42. {
  43. return m_AssetName;
  44. }
  45. }
  46. public Type AssetType
  47. {
  48. get
  49. {
  50. return m_AssetType;
  51. }
  52. }
  53. public ResourceInfo ResourceInfo
  54. {
  55. get
  56. {
  57. return m_ResourceInfo;
  58. }
  59. }
  60. public ResourceObject ResourceObject
  61. {
  62. get
  63. {
  64. return m_ResourceObject;
  65. }
  66. }
  67. public abstract bool IsScene
  68. {
  69. get;
  70. }
  71. public object UserData
  72. {
  73. get
  74. {
  75. return m_UserData;
  76. }
  77. }
  78. public DateTime StartTime
  79. {
  80. get
  81. {
  82. return m_StartTime;
  83. }
  84. set
  85. {
  86. m_StartTime = value;
  87. }
  88. }
  89. public int LoadedDependencyAssetCount
  90. {
  91. get
  92. {
  93. return m_DependencyAssets.Count;
  94. }
  95. }
  96. public int TotalDependencyAssetCount
  97. {
  98. get
  99. {
  100. return m_TotalDependencyAssetCount;
  101. }
  102. set
  103. {
  104. m_TotalDependencyAssetCount = value;
  105. }
  106. }
  107. public override string Description
  108. {
  109. get
  110. {
  111. return m_AssetName;
  112. }
  113. }
  114. public override void Clear()
  115. {
  116. base.Clear();
  117. m_AssetName = null;
  118. m_AssetType = null;
  119. m_ResourceInfo = null;
  120. m_DependencyAssetNames = null;
  121. m_UserData = null;
  122. m_DependencyAssets.Clear();
  123. m_ResourceObject = null;
  124. m_StartTime = default(DateTime);
  125. m_TotalDependencyAssetCount = 0;
  126. }
  127. public string[] GetDependencyAssetNames()
  128. {
  129. return m_DependencyAssetNames;
  130. }
  131. public List<object> GetDependencyAssets()
  132. {
  133. return m_DependencyAssets;
  134. }
  135. public void LoadMain(LoadResourceAgent agent, ResourceObject resourceObject)
  136. {
  137. m_ResourceObject = resourceObject;
  138. agent.Helper.LoadAsset(resourceObject.Target, AssetName, AssetType, IsScene);
  139. }
  140. public virtual void OnLoadAssetSuccess(LoadResourceAgent agent, object asset, float duration)
  141. {
  142. }
  143. public virtual void OnLoadAssetFailure(LoadResourceAgent agent, LoadResourceStatus status, string errorMessage)
  144. {
  145. }
  146. public virtual void OnLoadAssetUpdate(LoadResourceAgent agent, LoadResourceProgress type, float progress)
  147. {
  148. }
  149. public virtual void OnLoadDependencyAsset(LoadResourceAgent agent, string dependencyAssetName, object dependencyAsset)
  150. {
  151. m_DependencyAssets.Add(dependencyAsset);
  152. }
  153. protected void Initialize(string assetName, Type assetType, int priority, ResourceInfo resourceInfo, string[] dependencyAssetNames, object userData)
  154. {
  155. Initialize(++s_Serial, priority);
  156. m_AssetName = assetName;
  157. m_AssetType = assetType;
  158. m_ResourceInfo = resourceInfo;
  159. m_DependencyAssetNames = dependencyAssetNames;
  160. m_UserData = userData;
  161. }
  162. }
  163. }
  164. }
  165. }