public AssetInfo(IncludeStateFlags state, List <AssetUniqueID> links, string spritePackingTag) { this.state = state; linkInfo = new LinkInfo() { links = links, spritePackingTag = spritePackingTag }; inboundLinks = null; }
public AssetInfo() { state = 0; linkInfo = new LinkInfo() { links = null, spritePackingTag = null }; inboundLinks = null; }
/// <summary> /// ユニークIDの梱包情報取得 /// </summary> public IncludeStateFlags GetIncludeStateFlags(AssetUniqueID uniqueID) { IncludeStateFlags result = 0; if (analyzeData.ContainsKey(uniqueID)) { result = analyzeData[uniqueID].state; } return(result); }
/// <summary> /// パスの梱包情報取得 /// </summary> public IncludeStateFlags GetIncludeStateFlags(string path) { IncludeStateFlags result = 0; if (pathToGuid.ContainsKey(path)) { var uniqueID = new AssetUniqueID(pathToGuid[path]); result = GetIncludeStateFlags(uniqueID); } return(result); }
/// <summary> /// 残りを除外判定 /// </summary> private void ExcludeForLeftovers(ref float doneCount, float progressUnit) { foreach (var analyzePath in pathToGuid.Keys) { var analyzeUniqueID = new AssetUniqueID(pathToGuid[analyzePath]); var includeCount = 0; if (!analyzeData.ContainsKey(analyzeUniqueID) || analyzeData[analyzeUniqueID].state == 0) { var linkInfos = GetLinkUniqueIDsFromAssetPath(analyzePath); foreach (var linkInfo in linkInfos) { if (!analyzeData.ContainsKey(linkInfo.Key)) { analyzeData.Add(linkInfo.Key, new AssetInfo()); } var dat = analyzeData[linkInfo.Key]; IncludeStateFlags datState = 0; dat.linkInfo = linkInfo.Value; if (!string.IsNullOrEmpty(dat.spritePackingTag)) { var spritePackingTagUniqueID = ConvertSpritePackingTagToUniqueID(dat.spritePackingTag); if (!analyzeData.ContainsKey(spritePackingTagUniqueID)) { analyzeData.Add(spritePackingTagUniqueID, new AssetInfo(0, new List <AssetUniqueID>(), null)); } analyzeData[spritePackingTagUniqueID].links.Add(analyzeUniqueID); datState = analyzeData[spritePackingTagUniqueID].state; } if (datState == 0) { datState = IncludeStateFlags.NonInclude; } else { ++includeCount; } dat.state = datState; } var includeGuidState = IsIncludeReturn.False; if (0 < includeCount) { includeGuidState = ((linkInfos.Count == includeCount)? IsIncludeReturn.True: IsIncludeReturn.Ambiguous); } includeGuid.Add(analyzeUniqueID.guid, includeGuidState); ++doneCount; analyzeProgress = doneCount * progressUnit; } } }
/// <summary> /// 梱包情報を梱包判定に変換 /// </summary> private static IsIncludeReturn ConvertIncludeStateFlagsToIsIncludeReturn(IncludeStateFlags flags) { var result = IsIncludeReturn.Unknown; if (flags == 0) { //empty. } else if (flags == IncludeStateFlags.NonInclude) { result = IsIncludeReturn.False; } else { result = IsIncludeReturn.True; } return(result); }