You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
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); |
|
} |
|
} |
|
} |
|
}
|
|
|