A game about forced loneliness, made by TACStudios
1using UnityEditor.ShaderGraph.Drawing.Controls; 2using UnityEngine; 3using UnityEditor.Graphing; 4using UnityEditor.ShaderGraph.Internal; 5 6namespace UnityEditor.ShaderGraph 7{ 8 [Title("Input", "Geometry", "UV")] 9 class UVNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireMeshUV 10 { 11 public const int OutputSlotId = 0; 12 private const string kOutputSlotName = "Out"; 13 14 [SerializeField] 15 private UVChannel m_OutputChannel; 16 17 [EnumControl("Channel")] 18 public UVChannel uvChannel 19 { 20 get { return m_OutputChannel; } 21 set 22 { 23 if (m_OutputChannel == value) 24 return; 25 26 m_OutputChannel = value; 27 Dirty(ModificationScope.Graph); 28 } 29 } 30 31 public override bool hasPreview { get { return true; } } 32 33 public UVNode() 34 { 35 name = "UV"; 36 synonyms = new string[] { "texcoords", "coords", "coordinates" }; 37 UpdateNodeAfterDeserialization(); 38 } 39 40 public override void UpdateNodeAfterDeserialization() 41 { 42 AddSlot(new Vector4MaterialSlot(OutputSlotId, kOutputSlotName, kOutputSlotName, SlotType.Output, Vector2.zero)); 43 RemoveSlotsNameNotMatching(new[] { OutputSlotId }); 44 } 45 46 public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) 47 { 48 sb.AppendLine(string.Format("$precision4 {0} = IN.{1};", GetVariableNameForSlot(OutputSlotId), m_OutputChannel.GetUVName())); 49 } 50 51 public bool RequiresMeshUV(UVChannel channel, ShaderStageCapability stageCapability) 52 { 53 return channel == uvChannel; 54 } 55 } 56}