49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityEditor.ShaderGraph
|
||
|
{
|
||
|
// this class is used to track asset dependencies in shadergraphs and subgraphs
|
||
|
// that is: it tracks files that the shadergraph or subgraph must access to generate the shader
|
||
|
// this data is used to automatically re-import the shadergraphs or subgraphs when any of the tracked files change
|
||
|
[GenerationAPI]
|
||
|
internal class AssetCollection
|
||
|
{
|
||
|
[Flags]
|
||
|
public enum Flags
|
||
|
{
|
||
|
SourceDependency = 1 << 0, // ShaderGraph directly reads the source file in the Assets directory
|
||
|
ArtifactDependency = 1 << 1, // ShaderGraph reads the import result artifact (i.e. subgraph import)
|
||
|
IsSubGraph = 1 << 2, // This asset is a SubGraph (used when we need to get multiple levels of dependencies)
|
||
|
IncludeInExportPackage = 1 << 3 // This asset should be pulled into any .unitypackages built via "Export Package.."
|
||
|
}
|
||
|
|
||
|
internal Dictionary<GUID, Flags> assets = new Dictionary<GUID, Flags>();
|
||
|
|
||
|
internal IEnumerable<GUID> assetGUIDs { get { return assets.Keys; } }
|
||
|
|
||
|
public AssetCollection()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
internal void Clear()
|
||
|
{
|
||
|
assets.Clear();
|
||
|
}
|
||
|
|
||
|
// these are assets that we read the source files directly (directly reading the file out of the Assets directory)
|
||
|
public void AddAssetDependency(GUID assetGUID, Flags flags)
|
||
|
{
|
||
|
if (assets.TryGetValue(assetGUID, out Flags existingFlags))
|
||
|
{
|
||
|
assets[assetGUID] = existingFlags | flags;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
assets.Add(assetGUID, flags);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|