using System.Linq; using UnityEditor.Graphing; namespace UnityEditor.ShaderGraph { readonly struct GraphDataReadOnly { private readonly GraphData m_Graph; public GraphDataReadOnly(GraphData graph) { m_Graph = graph; } private bool AnyConnectedControl<T>() where T : IControl { var matchingNodes = m_Graph.GetNodes<BlockNode>().Where(o => o.descriptor.control is T); return matchingNodes.SelectMany(o => o.GetInputSlots<MaterialSlot>()).Any(o => o.isConnected); } public bool AnyVertexAnimationActive() { return AnyConnectedControl<PositionControl>(); } public bool IsVFXCompatible() => m_Graph.hasVFXCompatibleTarget; } }