SysProcessSearch.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using Leopotam.Ecs;
  3. using UnityEngine;
  4. using static Asset_Cleaner.AufCtx;
  5. namespace Asset_Cleaner {
  6. class SysProcessSearch : IEcsRunSystem {
  7. EcsFilter<SelectionChanged> _from = null;
  8. EcsFilter<Result, SearchResultGui, InSceneResult> SceneResultRows = null;
  9. EcsFilter<SceneResult, SceneDetails> ScenePaths = null;
  10. EcsFilter<SearchArg>.Exclude<InSceneResult> SearchArgMain = null;
  11. EcsFilter<Result, SearchResultGui, FileResultTag> FileResultRows = null;
  12. public void Run() {
  13. if (_from.IsEmpty())
  14. return;
  15. SearchArgMain.AllDestroy();
  16. ScenePaths.AllDestroy();
  17. FileResultRows.AllDestroy();
  18. SceneResultRows.AllDestroy();
  19. var wd = Globals<WindowData>.Value;
  20. if (wd.Window)
  21. wd.Window.Repaint();
  22. foreach (var i in _from.Out(out var get1, out _)) {
  23. var t1 = get1[i];
  24. if (!t1.Target) continue;
  25. wd.FindFrom = t1.From;
  26. try {
  27. switch (t1.From) {
  28. case FindModeEnum.Scene:
  29. World.NewEntityWith(out SearchArg st);
  30. SearchUtils.Init(st, t1.Target, t1.Scene);
  31. SearchUtils.InScene(st, t1.Scene);
  32. break;
  33. case FindModeEnum.File:
  34. World.NewEntityWith(out SearchArg arg);
  35. SearchUtils.Init(arg, t1.Target);
  36. SearchUtils.FilesThatReference(arg);
  37. SearchUtils.ScenesThatContain(t1.Target);
  38. break;
  39. }
  40. }
  41. catch (Exception e) {
  42. Debug.LogException(e);
  43. }
  44. }
  45. _from.AllUnset<SelectionChanged>();
  46. }
  47. }
  48. }