private void CreateOverview(AIStorage[] ais) { _step = Step.Processing; EditorAsync.ExecuteDelayed(() => Investigate(ais), 10); _owner.Repaint(); }
private static bool ExecuteCommand(string cmd, int delay) { var ais = selectedAIs.ToArray(); if (ais.Length == 0) { return(false); } bool consumeEvent = false; switch (cmd) { case "Open": { _pendingAction = () => { for (int i = 0; i < ais.Length; i++) { AIEditorWindow.Open(ais[i].aiId); } }; consumeEvent = true; break; } case "Delete": case "SoftDelete": { //reload all windows with deleted ais var aisBefore = StoredAIs.AIs.ToArray(); _pendingAction = () => { StoredAIs.Refresh(); var aisAfter = StoredAIs.AIs.ToArray(); var deletedIds = aisBefore.Except(aisAfter).Select(ai => ai.aiId).ToArray(); AIEditorWindow.Unload(deletedIds); }; break; } case "Duplicate": { //identify all additions and re-ID them. var aisBefore = StoredAIs.AIs.ToArray(); _pendingAction = () => { StoredAIs.Refresh(); var aisAfter = StoredAIs.AIs.ToArray(); var addedAis = aisAfter.Except(aisBefore); foreach (var copiedAI in addedAis) { var ui = AIUI.Load(copiedAI, false); if (ui != null) { ui.ai.RegenerateIds(); copiedAI.aiId = ui.ai.id.ToString(); ui.Save(null); } else { var path = AssetDatabase.GetAssetPath(copiedAI); AssetDatabase.DeleteAsset(path); } } }; break; } } EditorAsync.ExecuteDelayed( () => { _pendingAction(); _pendingAction = null; }, delay); return(consumeEvent); }