123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System.Collections.Generic;
- using UnityEditor.ShaderGraph.Drawing.Controls;
- using UnityEngine;
- using UnityEditor.Graphing;
- using UnityEditor.ShaderGraph.Internal;
- namespace UnityEditor.ShaderGraph
- {
- [Title("Input", "Texture", "Texture 2D Array Asset")]
- class Texture2DArrayAssetNode : AbstractMaterialNode, IPropertyFromNode
- {
- public const int OutputSlotId = 0;
- const string kOutputSlotName = "Out";
- public Texture2DArrayAssetNode()
- {
- name = "Texture 2D Array Asset";
- UpdateNodeAfterDeserialization();
- }
- public sealed override void UpdateNodeAfterDeserialization()
- {
- AddSlot(new Texture2DArrayMaterialSlot(OutputSlotId, kOutputSlotName, kOutputSlotName, SlotType.Output));
- RemoveSlotsNameNotMatching(new[] { OutputSlotId });
- }
- [SerializeField]
- private SerializableTextureArray m_Texture = new SerializableTextureArray();
- [TextureArrayControl("")]
- public Texture2DArray texture
- {
- get { return m_Texture.textureArray; }
- set
- {
- if (m_Texture.textureArray == value)
- return;
- m_Texture.textureArray = value;
- Dirty(ModificationScope.Node);
- }
- }
- public override void CollectShaderProperties(PropertyCollector properties, GenerationMode generationMode)
- {
- properties.AddShaderProperty(new Texture2DArrayShaderProperty()
- {
- overrideReferenceName = GetVariableNameForSlot(OutputSlotId),
- generatePropertyBlock = true,
- value = m_Texture,
- modifiable = false
- });
- }
- public override void CollectPreviewMaterialProperties(List<PreviewProperty> properties)
- {
- properties.Add(new PreviewProperty(PropertyType.Texture2DArray)
- {
- name = GetVariableNameForSlot(OutputSlotId),
- textureValue = texture
- });
- }
- public AbstractShaderProperty AsShaderProperty()
- {
- var prop = new Texture2DArrayShaderProperty { value = m_Texture };
- if (texture != null)
- prop.displayName = texture.name;
- return prop;
- }
- public int outputSlotId { get { return OutputSlotId; } }
- }
- }
|