evershade/Packages/super-tiled2unity.v2.2.0/Editor/Windows/RecursiveAssetDependencyTra...

41 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
namespace SuperTiled2Unity.Editor
{
public class RecursiveAssetDependencyTracker
{
private string m_SourceAsset;
private HashSet<string> m_VisitedFiles = new HashSet<string>();
private HashSet<string> m_Dependencies = new HashSet<string>();
public RecursiveAssetDependencyTracker(string asset)
{
m_SourceAsset = asset;
ProcessFile(m_SourceAsset);
}
public List<string> 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<SuperAsset>(assetPath) as SuperAsset;
if (super != null)
{
foreach (var path in super.AssetDependencies)
{
ProcessFile(path);
}
}
}
}
}
}