private bool ABState2Msg(ABState state, out string msg) { msg = ""; bool result = true; if (state.isMixedFlag || state.hasMixed) { msg += "-混合模式"; result = false; } else if (state.isFileFlag) { msg += "-文件模式"; } else if (state.isFolderFlag) { msg += "-文件夹模式"; } if (state.isLost) { msg += "-丢失"; result = false; } if (string.IsNullOrEmpty(msg)) { msg += "-正常"; } return(result); }
public void OnFolderVisitorResult(string folderFullPath, ABState state) { m_Handler.AddConfig(folderFullPath, state); if (((state.flag ^ ABStateDefine.MIXED) & ABStateDefine.MIXED) == 0) { //Log.w("Folder Has Mixed Flag:" + folderFullPath); } }
public void AddConfig(string folderFullPath, ABState state) { ABStateUnit unit = null; if (!m_StateMap.TryGetValue(folderFullPath, out unit)) { unit = new ABStateUnit(); AddConfigUnit(folderFullPath, unit); } unit.folderAssetPath = EditorUtils.ABSPath2AssetsPath(folderFullPath); unit.state = state; }
public void BuildAsFileSystem(string folderPath) { m_FolderAssetsPath = folderPath; if (m_StateMap == null) { m_StateMap = new Dictionary <string, ABStateUnit>(); } else { m_StateMap.Clear(); } var gen = new GenerateConfigVisitor(this); string fullPath = EditorUtils.AssetsPath2ABSPath(folderPath); ABState subState = VisitorFolder(fullPath, gen); gen.OnFolderVisitorResult(fullPath, subState); }
private ABState VisitorFolder(string absPath, IFolderVisitor visitor) { if (visitor == null) { return(ABState.NONE); } ABState state = new ABState(); var dirs = Directory.GetDirectories(absPath); if (dirs.Length > 0) { for (int i = 0; i < dirs.Length; ++i) { ABState subState = VisitorFolder(dirs[i], visitor); if (subState.hasMixed) { state.hasMixed = true; } if (subState.isLost) { state.isLost = true; } } } var files = Directory.GetFiles(absPath); if (files.Length > 0) { for (int i = 0; i < files.Length; ++i) { if (!AssetFileFilter.IsAsset(files[i])) { continue; } AssetImporter ai = AssetImporter.GetAtPath(EditorUtils.ABSPath2AssetsPath(files[i])); if (ai != null) { if (!string.IsNullOrEmpty(ai.assetBundleName)) { //Log.i("Files:" + files[i] + " ---> " + ai.assetBundleName); string assetPath = EditorFileUtils.RemoveFileExtend(ai.assetPath).ToLower(); string bundleName = EditorFileUtils.RemoveFileExtend(ai.assetBundleName); if (assetPath.EndsWith(bundleName)) { //Log.i("File Flag:" + assetPath); state.flag |= ABStateDefine.FILE; visitor.OnAssetVisitorResult(ai, ABStateDefine.FILE); } else { //Log.i("##Folder Flag:" + assetPath); state.flag |= ABStateDefine.FOLDER; visitor.OnAssetVisitorResult(ai, ABStateDefine.FOLDER); } } else { state.isLost = true; visitor.OnAssetVisitorResult(ai, ABStateDefine.LOST); } } } } if (state.isMixedFlag) { state.hasMixed = true; } visitor.OnFolderVisitorResult(absPath, state); return(state); }