A game about forced loneliness, made by TACStudios
at master 2.2 kB view raw
1using System; 2using UnityEditor.Graphing; 3using UnityEditor.ShaderGraph.Drawing.Slots; 4using UnityEngine; 5using UnityEngine.UIElements; 6 7namespace UnityEditor.ShaderGraph 8{ 9 [Serializable] 10 class ScreenPositionMaterialSlot : Vector4MaterialSlot, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition 11 { 12 [SerializeField] 13 ScreenSpaceType m_ScreenSpaceType; 14 15 public ScreenSpaceType screenSpaceType 16 { 17 get { return m_ScreenSpaceType; } 18 set { m_ScreenSpaceType = value; } 19 } 20 21 public override bool isDefaultValue => screenSpaceType == ScreenSpaceType.Default; 22 23 public ScreenPositionMaterialSlot() 24 { } 25 26 public ScreenPositionMaterialSlot(int slotId, string displayName, string shaderOutputName, ScreenSpaceType screenSpaceType, 27 ShaderStageCapability stageCapability = ShaderStageCapability.All, bool hidden = false) 28 : base(slotId, displayName, shaderOutputName, SlotType.Input, Vector3.zero, stageCapability, hidden: hidden) 29 { 30 this.screenSpaceType = screenSpaceType; 31 } 32 33 public override VisualElement InstantiateControl() 34 { 35 return new ScreenPositionSlotControlView(this); 36 } 37 38 public override string GetDefaultValue(GenerationMode generationMode) 39 { 40 return m_ScreenSpaceType.ToValueAsVariable(); 41 } 42 43 public bool RequiresScreenPosition(ShaderStageCapability stageCapability) 44 { 45 return !isConnected && screenSpaceType.RequiresScreenPosition(); 46 } 47 public bool RequiresNDCPosition(ShaderStageCapability stageCapability) 48 { 49 return !isConnected && screenSpaceType.RequiresNDCPosition(); 50 } 51 public bool RequiresPixelPosition(ShaderStageCapability stageCapability) 52 { 53 return !isConnected && screenSpaceType.RequiresPixelPosition(); 54 } 55 56 public override void CopyValuesFrom(MaterialSlot foundSlot) 57 { 58 var slot = foundSlot as ScreenPositionMaterialSlot; 59 if (slot != null) 60 screenSpaceType = slot.screenSpaceType; 61 } 62 } 63}