123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using System;
- using System.Collections.Generic;
- using UnityEditor.Graphing;
- using UnityEditor.ShaderGraph.Drawing.Slots;
- using UnityEditor.ShaderGraph.Internal;
- using UnityEngine;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.ShaderGraph
- {
- [Serializable]
- [HasDependencies(typeof(MinimalTexture2DArrayInputMaterialSlot))]
- class Texture2DArrayInputMaterialSlot : Texture2DArrayMaterialSlot
- {
- [SerializeField]
- private SerializableTextureArray m_TextureArray = new SerializableTextureArray();
-
- public Texture2DArray textureArray
- {
- get { return m_TextureArray.textureArray; }
- set { m_TextureArray.textureArray = value; }
- }
-
- public override bool isDefaultValue => textureArray == null;
-
- public Texture2DArrayInputMaterialSlot()
- { }
-
- public Texture2DArrayInputMaterialSlot(
- int slotId,
- string displayName,
- string shaderOutputName,
- ShaderStageCapability shaderStageCapability = ShaderStageCapability.All,
- bool hidden = false)
- : base(slotId, displayName, shaderOutputName, SlotType.Input, shaderStageCapability, hidden)
- { }
-
- public override VisualElement InstantiateControl()
- {
- return new TextureArraySlotControlView(this);
- }
-
- public override string GetDefaultValue(GenerationMode generationMode)
- {
- var nodeOwner = owner as AbstractMaterialNode;
- if (nodeOwner == null)
- throw new Exception(string.Format("Slot {0} either has no owner, or the owner is not a {1}", this, typeof(AbstractMaterialNode)));
-
- return $"UnityBuildTexture2DArrayStruct({nodeOwner.GetVariableNameForSlot(id)})";
- }
-
- public override void AddDefaultProperty(PropertyCollector properties, GenerationMode generationMode)
- {
- var nodeOwner = owner as AbstractMaterialNode;
- if (nodeOwner == null)
- throw new Exception(string.Format("Slot {0} either has no owner, or the owner is not a {1}", this, typeof(AbstractMaterialNode)));
-
- var prop = new Texture2DArrayShaderProperty();
- prop.overrideReferenceName = nodeOwner.GetVariableNameForSlot(id);
- prop.modifiable = false;
- prop.generatePropertyBlock = true;
- prop.value.textureArray = textureArray;
- properties.AddShaderProperty(prop);
- }
-
- public override void GetPreviewProperties(List<PreviewProperty> properties, string name)
- {
- var pp = new PreviewProperty(PropertyType.Texture2DArray)
- {
- name = name,
- textureValue = textureArray,
- };
- properties.Add(pp);
- }
-
- public override void CopyValuesFrom(MaterialSlot foundSlot)
- {
- var slot = foundSlot as Texture2DArrayInputMaterialSlot;
- if (slot != null)
- {
- m_TextureArray = slot.m_TextureArray;
- bareResource = slot.bareResource;
- }
- }
- }
-
- class MinimalTexture2DArrayInputMaterialSlot : IHasDependencies
- {
- [SerializeField]
- private SerializableTextureArray m_TextureArray = null;
-
- public void GetSourceAssetDependencies(AssetCollection assetCollection)
- {
- var guidString = m_TextureArray.guid;
- if (!string.IsNullOrEmpty(guidString) && GUID.TryParse(guidString, out var guid))
- {
- assetCollection.AddAssetDependency(guid, AssetCollection.Flags.IncludeInExportPackage);
- }
- }
- }
- }
|