using System; using System.Collections.Generic; using System.Linq; using UnityEditor; namespace SuperTiled2Unity.Editor { public class RecursiveAssetDependencyTracker { private string m_SourceAsset; private HashSet m_VisitedFiles = new HashSet(); private HashSet m_Dependencies = new HashSet(); public RecursiveAssetDependencyTracker(string asset) { m_SourceAsset = asset; ProcessFile(m_SourceAsset); } public List Dependencies { get { return m_Dependencies.ToList(); } } private void ProcessFile(string assetPath) { if (!m_VisitedFiles.Contains(assetPath, StringComparer.OrdinalIgnoreCase)) { m_VisitedFiles.Add(assetPath); m_Dependencies.Add(assetPath); var super = AssetDatabase.LoadAssetAtPath(assetPath) as SuperAsset; if (super != null) { foreach (var path in super.AssetDependencies) { ProcessFile(path); } } } } } }