private bool LoadDependencyAsset(string assetName, int priority, LoadResourceTaskBase mainTask, object userData)
            {
                if (mainTask == null)
                {
                    throw new GameFrameworkException("Main task is invalid.");
                }

                ResourceInfo?resourceInfo      = null;
                string       resourceChildName = null;

                string[] dependencyAssetNames          = null;
                string[] scatteredDependencyAssetNames = null;

                if (!CheckAsset(assetName, out resourceInfo, out resourceChildName, out dependencyAssetNames, out scatteredDependencyAssetNames))
                {
                    Log.Debug("Can not load asset '{0}'.", assetName);
                    return(false);
                }

                LoadDependencyAssetTask dependencyTask = new LoadDependencyAssetTask(assetName, priority, resourceInfo.Value, resourceChildName, dependencyAssetNames, scatteredDependencyAssetNames, mainTask, userData);

                foreach (string dependencyAssetName in dependencyAssetNames)
                {
                    if (!LoadDependencyAsset(dependencyAssetName, priority, dependencyTask, userData))
                    {
                        Log.Debug("Can not load dependency asset '{0}' when load dependency asset '{1}'.", dependencyAssetName, assetName);
                        return(false);
                    }
                }

                m_TaskPool.AddTask(dependencyTask);
                return(true);
            }
            private bool LoadDependencyAsset(string assetName, int priority, LoadResourceTaskBase mainTask, object userData)
            {
                if (mainTask == null)
                {
                    throw new GXException("Main task is invalid.");
                }

                ResourceInfo?resourceInfo = null;

                string[] dependencyAssetNames = null;
                if (!CheckAsset(assetName, out resourceInfo, out dependencyAssetNames))
                {
                    return(false);
                }

                if (IsLoadFromBinary(resourceInfo.Value.LoadType))
                {
                    return(false);
                }

                LoadDependencyAssetTask dependencyTask = LoadDependencyAssetTask.Create(assetName, priority, resourceInfo.Value, dependencyAssetNames, mainTask, userData);

                foreach (string dependencyAssetName in dependencyAssetNames)
                {
                    if (!LoadDependencyAsset(dependencyAssetName, priority, dependencyTask, userData))
                    {
                        return(false);
                    }
                }

                m_TaskPool.AddTask(dependencyTask);
                return(true);
            }
 public LoadDependencyAssetTask(string assetName, int priority, ResourceInfo resourceInfo, string[] dependencyAssetNames, LoadResourceTaskBase mainTask, object userData)
     : base(assetName, null, priority, resourceInfo, dependencyAssetNames, userData)
 {
     m_MainTask = mainTask;
     m_MainTask.TotalDependencyAssetCount++;
 }
 public override void Clear()
 {
     base.Clear();
     m_MainTask = null;
 }
                public static LoadDependencyAssetTask Create(string assetName, int priority, ResourceInfo resourceInfo, string[] dependencyAssetNames, LoadResourceTaskBase mainTask, object userData)
                {
                    LoadDependencyAssetTask loadDependencyAssetTask = ReferencePool.Acquire <LoadDependencyAssetTask>();

                    loadDependencyAssetTask.Initialize(assetName, null, priority, resourceInfo, dependencyAssetNames, userData);
                    loadDependencyAssetTask.m_MainTask = mainTask;
                    loadDependencyAssetTask.m_MainTask.TotalDependencyAssetCount++;
                    return(loadDependencyAssetTask);
                }
 public LoadDependencyAssetTask()
 {
     m_MainTask = null;
 }
 public LoadDependencyAssetTask(string assetName, ResourceInfo resourceInfo, string[] dependencyAssetNames, string[] scatteredDependencyAssetNames, string resourceChildName, LoadResourceTaskBase mainTask, object userData)
     : base(assetName, "", resourceInfo, dependencyAssetNames, scatteredDependencyAssetNames, resourceChildName, userData)
 {
     m_MainTask = mainTask;
     m_MainTask.TotalDependencyAssetCount++;
 }
 public void Initialize(string assetName, int priority, ResourceInfo resourceInfo, string[] dependencyAssetNames, LoadResourceTaskBase mainTask, object userData)
 {
     base.Initialize(assetName, null, priority, resourceInfo, dependencyAssetNames, userData);
     m_MainTask = mainTask;
     m_MainTask.TotalDependencyAssetCount++;
 }