Weapons/PrefabLibrary.cs
/// <summary>
/// Utility for finding prefabs by component type.
/// </summary>
public static class PrefabLibrary
{
	/// <summary>
	/// Returns all registered PrefabFiles whose root object has a component of type T.
	/// </summary>
	public static IEnumerable<PrefabFile> GetPrefabsOfType<T>() where T : Component
	{
		foreach ( var prefab in ResourceLibrary.GetAll<PrefabFile>() )
		{
			var scene = SceneUtility.GetPrefabScene( prefab );
			if ( scene == null ) continue;

			if ( scene.Components.Get<T>( FindMode.EnabledInSelfAndDescendants ) != null )
				yield return prefab;
		}
	}
}