private void AddRecursive(int entryNameIndex, Dictionary <string, StatusTreeEntry> entries) { StatusTreeEntry entry; string pathChunk = currentPathArray[entryNameIndex].Replace(".meta", ""); //should a state change be marked at this level (inverse depth) //bool markState = Settings.ProjectStatusOverlayDepth < 0 || (Mathf.Abs(currentPathArray.Length - entryNameIndex)) <= Math.Max(1, Settings.ProjectStatusOverlayDepth); //markState = true; if (entries.TryGetValue(pathChunk, out entry)) { entry.State = entry.State.SetFlags(currentStatus, true); } else { entry = new StatusTreeEntry(entryNameIndex); entry.State = entry.State.SetFlags(currentStatus); entries.Add(pathChunk, entry); } //check if it's at a allowed depth for status forcing on folders if (currentPathArray.Length - entryNameIndex < (Settings.ProjectStatusOverlayDepth + 1)) { entry.forceStatus = true; } if (entryNameIndex < currentPathArray.Length - 1) { AddRecursive(entryNameIndex + 1, entry.SubEntiEntries); } }
private void AddRecursive(int entryNameIndex, string[] path, Dictionary <string, StatusTreeEntry> entries, FileStatus fileStatus) { StatusTreeEntry entry; string pathChunk = path[entryNameIndex].Replace(".meta", ""); if (entries.TryGetValue(pathChunk, out entry)) { entry.State = entry.State.SetFlags(fileStatus, true); } else { entry = new StatusTreeEntry(fileStatus); entries.Add(pathChunk, entry); } if (entryNameIndex < path.Length - 1) { AddRecursive(entryNameIndex + 1, path, entry.SubEntiEntries, fileStatus); } }
private void AddSubModuleRecursive(int entryNameIndex, Dictionary <string, StatusTreeEntry> entries) { StatusTreeEntry entry; string pathChunk = currentPathArray[entryNameIndex].Replace(".meta", ""); if (!entries.TryGetValue(pathChunk, out entry)) { entry = new StatusTreeEntry(entryNameIndex); entries.Add(pathChunk, entry); } if (entryNameIndex < currentPathArray.Length - 1) { AddSubModuleRecursive(entryNameIndex + 1, entry.SubEntiEntries); } else { entry.isSubModule = true; entry.SubmoduleStatus = currentSubModuleStatus; entry.forceStatus = true; } }
private void GetStatusRecursive(int entryNameIndex, string[] path, Dictionary <string, StatusTreeEntry> entries, out StatusTreeEntry entry) { if (path.Length <= 0) { entry = null; return; } StatusTreeEntry entryTmp; if (entries.TryGetValue(path[entryNameIndex], out entryTmp)) { if (entryNameIndex < path.Length - 1) { GetStatusRecursive(entryNameIndex + 1, path, entryTmp.SubEntiEntries, out entry); return; } entry = entryTmp; return; } entry = null; }