GetContextualMapProvider.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Linq;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace LLM.Editor.Analysis
  5. {
  6. public class GetContextualMapProvider : IContextProvider
  7. {
  8. public object GetContext(Object target, string qualifier)
  9. {
  10. if (string.IsNullOrEmpty(qualifier))
  11. {
  12. return "Error: A search term (qualifier) is required for GetContextualMap.";
  13. }
  14. var prefabs = AssetDatabase.FindAssets($"t:Prefab {qualifier}")
  15. .Select(AssetDatabase.GUIDToAssetPath)
  16. .Select(path => new { name = System.IO.Path.GetFileName(path), path, guid = AssetDatabase.AssetPathToGUID(path) })
  17. .ToList();
  18. var scripts = AssetDatabase.FindAssets($"t:MonoScript {qualifier}")
  19. .Select(AssetDatabase.GUIDToAssetPath)
  20. .Where(path => path.StartsWith("Assets/"))
  21. .Select(path => new { name = System.IO.Path.GetFileName(path), path, guid = AssetDatabase.AssetPathToGUID(path) })
  22. .ToList();
  23. var sceneObjects = Object.FindObjectsOfType<GameObject>()
  24. .Where(go => go.name.ToLower().Contains(qualifier.ToLower()))
  25. .Select(go => new { go.name, id = go.GetInstanceID().ToString() })
  26. .ToList();
  27. var sceneObjectsByComponent = Object.FindObjectsOfType<Component>()
  28. .Where(c => c.GetType().Name.ToLower().Contains(qualifier.ToLower()))
  29. .Select(c => new { name = c.gameObject.name + $" Component: ({c.GetType().Name})", id = c.gameObject.GetInstanceID().ToString() })
  30. .ToList();
  31. return new
  32. {
  33. prefabs,
  34. scripts,
  35. sceneObjects,
  36. sceneObjectsByComponent
  37. };
  38. }
  39. }
  40. }