123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using System.Collections.Generic;
- using UnityEditor.ShaderGraph.Drawing.Controls;
- using UnityEngine;
- using UnityEditor.Graphing;
- using System.Globalization;
- using UnityEditor.ShaderGraph.Internal;
- namespace UnityEditor.ShaderGraph
- {
- [Title("Input", "Basic", "Slider")]
- class SliderNode : AbstractMaterialNode, IGeneratesBodyCode, IPropertyFromNode
- {
- [SerializeField]
- private Vector3 m_Value = new Vector3(0f, 0f, 1f);
- public const int OutputSlotId = 0;
- private const string kOutputSlotName = "Out";
- public SliderNode()
- {
- name = "Slider";
- UpdateNodeAfterDeserialization();
- }
- public sealed override void UpdateNodeAfterDeserialization()
- {
- AddSlot(new Vector1MaterialSlot(OutputSlotId, kOutputSlotName, kOutputSlotName, SlotType.Output, 0));
- RemoveSlotsNameNotMatching(new[] { OutputSlotId });
- }
- [SliderControl("", true)]
- public Vector3 value
- {
- get { return m_Value; }
- set
- {
- if (m_Value == value)
- return;
- m_Value = value;
- Dirty(ModificationScope.Node);
- }
- }
- public override void CollectShaderProperties(PropertyCollector properties, GenerationMode generationMode)
- {
- if (!generationMode.IsPreview())
- return;
- properties.AddShaderProperty(new Vector1ShaderProperty()
- {
- overrideReferenceName = GetVariableNameForNode(),
- generatePropertyBlock = false,
- value = value.x,
- rangeValues = new Vector2(value.y, value.z),
- floatType = FloatType.Slider
- });
- }
- public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode)
- {
- if (generationMode.IsPreview())
- return;
- sb.AppendLine(string.Format(CultureInfo.InvariantCulture,"$precision {0} = {1};", GetVariableNameForNode(), m_Value.x));
- }
- public override string GetVariableNameForSlot(int slotId)
- {
- return GetVariableNameForNode();
- }
- public override void CollectPreviewMaterialProperties(List<PreviewProperty> properties)
- {
- properties.Add(new PreviewProperty(PropertyType.Vector1)
- {
- name = GetVariableNameForNode(),
- floatValue = m_Value.x
- });
- }
- public AbstractShaderProperty AsShaderProperty()
- {
- return new Vector1ShaderProperty
- {
- value = value.x,
- rangeValues = new Vector2(value.y, value.z),
- floatType = FloatType.Slider
- };
- }
- public int outputSlotId { get { return OutputSlotId; } }
- }
- }
|