/// <inheritdoc /> public ReturnCode Run() { TaskInput input = new TaskInput(); input.Target = m_Parameters.Target; input.TypeDB = m_Parameters.ScriptInfo; input.BuildCache = m_Parameters.UseCache ? m_Cache : null; #if NONRECURSIVE_DEPENDENCY_DATA input.NonRecursiveDependencies = m_Parameters.NonRecursiveDependencies; #else input.NonRecursiveDependencies = false; #endif input.Assets = m_Content.Assets; input.ProgressTracker = m_Tracker; input.DependencyUsageCache = m_DependencyData.DependencyUsageCache; input.GlobalUsage = m_DependencyData.GlobalUsage; input.Logger = m_Log; foreach (SceneDependencyInfo sceneInfo in m_DependencyData.SceneInfo.Values) { input.GlobalUsage |= sceneInfo.globalUsage; } ReturnCode code = RunInternal(input, out TaskOutput output); if (code == ReturnCode.Success) { foreach (AssetOutput o in output.AssetResults) { m_DependencyData.AssetInfo.Add(o.asset, o.assetInfo); m_DependencyData.AssetUsage.Add(o.asset, o.usageTags); if (o.spriteData != null) { if (m_SpriteData == null) { m_SpriteData = new BuildSpriteData(); } m_SpriteData.ImporterData.Add(o.asset, o.spriteData); } if (!m_Parameters.DisableVisibleSubAssetRepresentations && o.extendedData != null) { if (m_ExtendedAssetData == null) { m_ExtendedAssetData = new BuildExtendedAssetData(); } m_ExtendedAssetData.ExtendedData.Add(o.asset, o.extendedData); } if (o.objectTypes != null) { BuildCacheUtility.SetTypeForObjects(o.objectTypes); } } } return(code); }
/// <inheritdoc /> public ReturnCode Run() { TaskInput input = new TaskInput(); input.Target = m_Parameters.Target; input.TypeDB = m_Parameters.ScriptInfo; input.BuildCache = m_Parameters.UseCache ? m_Cache : null; input.Assets = m_Content.Assets; input.ProgressTracker = m_Tracker; input.DependencyUsageCache = m_DependencyData.DependencyUsageCache; input.GlobalUsage = m_DependencyData.GlobalUsage; input.Logger = m_Log; foreach (SceneDependencyInfo sceneInfo in m_DependencyData.SceneInfo.Values) { input.GlobalUsage |= sceneInfo.globalUsage; } ReturnCode code = RunInternal(input, out TaskOutput output); if (code == ReturnCode.Success) { foreach (AssetOutput o in output.AssetResults) { m_DependencyData.AssetInfo.Add(o.asset, o.assetInfo); m_DependencyData.AssetUsage.Add(o.asset, o.usageTags); if (o.spriteData != null) { if (m_SpriteData == null) { m_SpriteData = new BuildSpriteData(); } m_SpriteData.ImporterData.Add(o.asset, o.spriteData); } if (o.extendedData != null) { if (m_ExtendedAssetData == null) { m_ExtendedAssetData = new BuildExtendedAssetData(); } m_ExtendedAssetData.ExtendedData.Add(o.asset, o.extendedData); } } } return(code); }
public ReturnCode Run() { var globalUsage = m_DependencyData.GlobalUsage; foreach (SceneDependencyInfo sceneInfo in m_DependencyData.SceneInfo.Values) { globalUsage |= sceneInfo.globalUsage; } if (m_SpriteData == null) { m_SpriteData = new BuildSpriteData(); } IList <CachedInfo> cachedInfo = null; List <CachedInfo> uncachedInfo = null; if (m_Parameters.UseCache && m_Cache != null) { IList <CacheEntry> entries = m_Content.Assets.Select(m_Cache.GetCacheEntry).ToList(); m_Cache.LoadCachedData(entries, out cachedInfo); uncachedInfo = new List <CachedInfo>(); } for (int i = 0; i < m_Content.Assets.Count; i++) { GUID asset = m_Content.Assets[i]; string assetPath = AssetDatabase.GUIDToAssetPath(asset.ToString()); AssetLoadInfo assetInfo; BuildUsageTagSet usageTags; SpriteImporterData importerData; if (cachedInfo != null && cachedInfo[i] != null) { if (!m_Tracker.UpdateInfoUnchecked(string.Format("{0} (Cached)", assetPath))) { return(ReturnCode.Canceled); } assetInfo = cachedInfo[i].Data[0] as AssetLoadInfo; usageTags = cachedInfo[i].Data[1] as BuildUsageTagSet; importerData = cachedInfo[i].Data[2] as SpriteImporterData; } else { if (!m_Tracker.UpdateInfoUnchecked(assetPath)) { return(ReturnCode.Canceled); } assetInfo = new AssetLoadInfo(); usageTags = new BuildUsageTagSet(); importerData = null; assetInfo.asset = asset; var includedObjects = ContentBuildInterface.GetPlayerObjectIdentifiersInAsset(asset, m_Parameters.Target); assetInfo.includedObjects = new List <ObjectIdentifier>(includedObjects); var referencedObjects = ContentBuildInterface.GetPlayerDependenciesForObjects(includedObjects, m_Parameters.Target, m_Parameters.ScriptInfo); assetInfo.referencedObjects = new List <ObjectIdentifier>(referencedObjects); ContentBuildInterface.CalculateBuildUsageTags(referencedObjects, includedObjects, globalUsage, usageTags, m_DependencyData.DependencyUsageCache); var importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; if (importer != null && importer.textureType == TextureImporterType.Sprite) { importerData = new SpriteImporterData(); importerData.PackedSprite = !string.IsNullOrEmpty(importer.spritePackingTag); importerData.SourceTexture = includedObjects.First(); } if (uncachedInfo != null) { uncachedInfo.Add(GetCachedInfo(asset, assetInfo, usageTags, importerData)); } } SetOutputInformation(asset, assetInfo, usageTags, importerData); } if (m_SpriteData.ImporterData.Count == 0) { m_SpriteData = null; } if (m_Parameters.UseCache && m_Cache != null) { m_Cache.SaveCachedData(uncachedInfo); } return(ReturnCode.Success); }
public ReturnCode Run() { var globalUsage = m_DependencyData.GlobalUsage; foreach (SceneDependencyInfo sceneInfo in m_DependencyData.SceneInfo.Values) { globalUsage |= sceneInfo.globalUsage; } if (m_SpriteData == null) { m_SpriteData = new BuildSpriteData(); } if (m_ExtendedAssetData == null) { m_ExtendedAssetData = new BuildExtendedAssetData(); } IList <CachedInfo> cachedInfo = null; List <CachedInfo> uncachedInfo = null; if (m_Parameters.UseCache && m_Cache != null) { IList <CacheEntry> entries = m_Content.Assets.Select(x => m_Cache.GetCacheEntry(x, Version)).ToList(); m_Cache.LoadCachedData(entries, out cachedInfo); uncachedInfo = new List <CachedInfo>(); } for (int i = 0; i < m_Content.Assets.Count; i++) { GUID asset = m_Content.Assets[i]; string assetPath = AssetDatabase.GUIDToAssetPath(asset.ToString()); AssetLoadInfo assetInfo; BuildUsageTagSet usageTags; SpriteImporterData importerData; ExtendedAssetData assetData; if (cachedInfo != null && cachedInfo[i] != null) { if (!m_Tracker.UpdateInfoUnchecked(string.Format("{0} (Cached)", assetPath))) { return(ReturnCode.Canceled); } assetInfo = cachedInfo[i].Data[0] as AssetLoadInfo; usageTags = cachedInfo[i].Data[1] as BuildUsageTagSet; importerData = cachedInfo[i].Data[2] as SpriteImporterData; assetData = cachedInfo[i].Data[3] as ExtendedAssetData; } else { if (!m_Tracker.UpdateInfoUnchecked(assetPath)) { return(ReturnCode.Canceled); } assetInfo = new AssetLoadInfo(); usageTags = new BuildUsageTagSet(); importerData = null; assetData = null; assetInfo.asset = asset; var includedObjects = ContentBuildInterface.GetPlayerObjectIdentifiersInAsset(asset, m_Parameters.Target); assetInfo.includedObjects = new List <ObjectIdentifier>(includedObjects); var referencedObjects = ContentBuildInterface.GetPlayerDependenciesForObjects(includedObjects, m_Parameters.Target, m_Parameters.ScriptInfo); assetInfo.referencedObjects = new List <ObjectIdentifier>(referencedObjects); var allObjects = new List <ObjectIdentifier>(includedObjects); allObjects.AddRange(referencedObjects); ContentBuildInterface.CalculateBuildUsageTags(allObjects.ToArray(), includedObjects, globalUsage, usageTags, m_DependencyData.DependencyUsageCache); var importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; if (importer != null && importer.textureType == TextureImporterType.Sprite) { // Legacy Sprite Packing Modes if (EditorSettings.spritePackerMode == SpritePackerMode.AlwaysOn || EditorSettings.spritePackerMode == SpritePackerMode.BuildTimeOnly) { importerData = new SpriteImporterData(); importerData.PackedSprite = !string.IsNullOrEmpty(importer.spritePackingTag); importerData.SourceTexture = includedObjects.First(); } else if (!referencedObjects.IsNullOrEmpty()) // Sprite is referencing packed data { importerData = new SpriteImporterData(); importerData.PackedSprite = EditorSettings.spritePackerMode != SpritePackerMode.Disabled; importerData.SourceTexture = includedObjects.First(); } } var representations = AssetDatabase.LoadAllAssetRepresentationsAtPath(assetPath); if (!representations.IsNullOrEmpty()) { assetData = new ExtendedAssetData(); foreach (var representation in representations) { if (AssetDatabase.IsMainAsset(representation)) { continue; } string guid; long localId; if (!AssetDatabase.TryGetGUIDAndLocalFileIdentifier(representation, out guid, out localId)) { continue; } assetData.Representations.AddRange(includedObjects.Where(x => x.localIdentifierInFile == localId)); } } if (uncachedInfo != null) { uncachedInfo.Add(GetCachedInfo(asset, assetInfo, usageTags, importerData, assetData)); } } SetOutputInformation(asset, assetInfo, usageTags, importerData, assetData); } if (m_SpriteData.ImporterData.Count == 0) { m_SpriteData = null; } if (m_ExtendedAssetData.ExtendedData.Count == 0) { m_SpriteData = null; } if (m_Parameters.UseCache && m_Cache != null) { m_Cache.SaveCachedData(uncachedInfo); } return(ReturnCode.Success); }