VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            EnumField precisionField = null;

            if (node.canSetPrecision)
            {
                precisionField = new EnumField(node.precision);
                var propertyRow = new PropertyRow(new Label("Precision"));
                propertyRow.Add(precisionField, (field) =>
                {
                    field.RegisterValueChangedCallback(evt =>
                    {
                        if (evt.newValue.Equals(node.precision))
                        {
                            return;
                        }

                        m_setNodesAsDirtyCallback();
                        node.owner.owner.RegisterCompleteObjectUndo("Change precision");
                        node.precision = (Precision)evt.newValue;
                        node.owner.ValidateGraph();
                        m_updateNodeViewsCallback();
                        node.Dirty(ModificationScope.Graph);
                    });
                });
                nodeSettings.Add(propertyRow);
            }
            propertyVisualElement = precisionField;
            return(nodeSettings);
        }
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node", () =>
                {
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }

            PropertyDrawerUtils.AddDefaultNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            propertyVisualElement = null;

            return(nodeSettings);
        }
        VisualElement CreateGUI(CustomFunctionNode node, InspectableAttribute attribute,
                                out VisualElement propertyVisualElement)
        {
            var propertySheet = new PropertySheet(PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold));

            PropertyDrawerUtils.AddDefaultNodeProperties(propertySheet, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            var inputListView = new ReorderableSlotListView(node, SlotType.Input, true);

            inputListView.OnAddCallback           += list => inspectorUpdateDelegate();
            inputListView.OnRemoveCallback        += list => inspectorUpdateDelegate();
            inputListView.OnListRecreatedCallback += () => inspectorUpdateDelegate();
            propertySheet.Add(inputListView);

            var outputListView = new ReorderableSlotListView(node, SlotType.Output, true);

            outputListView.OnAddCallback           += list => inspectorUpdateDelegate();
            outputListView.OnRemoveCallback        += list => inspectorUpdateDelegate();
            outputListView.OnListRecreatedCallback += () => inspectorUpdateDelegate();
            propertySheet.Add(outputListView);

            propertySheet.Add(new HlslFunctionView(node));
            propertyVisualElement = null;
            return(propertySheet);
        }
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject,
                                   InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                (SubGraphOutputNode)actualObject,
                attribute,
                out var propertyVisualElement));
 }
Exemplo n.º 5
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject,
                                   InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                (SampleVirtualTextureNode)actualObject,
                attribute,
                out var propertyVisualElement));
 }
Exemplo n.º 6
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject,
                                   InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                (CustomFunctionNode)actualObject,
                attribute,
                out var propertyVisualElement));
 }
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                string      deprecationText = null;
                string      buttonText      = null;
                string      labelText       = null;
                MessageType messageType     = MessageType.Warning;
                if (node is IHasCustomDeprecationMessage nodeWithCustomDeprecationSettings)
                {
                    nodeWithCustomDeprecationSettings.GetCustomDeprecationMessage(out deprecationText, out buttonText, out labelText, out messageType);
                }

                Action dismissAction = null;
                if (node.dismissedUpdateVersion < node.latestVersion)
                {
                    dismissAction = () =>
                    {   // dismiss
                        m_setNodesAsDirtyCallback?.Invoke();
                        node.owner.owner.RegisterCompleteObjectUndo($"Dismiss {node.name} Node Upgrade Flag");
                        node.dismissedUpdateVersion = node.latestVersion;
                        node.owner.messageManager.ClearNodesFromProvider(node.owner, new AbstractMaterialNode[] { node });
                        node.Dirty(ModificationScope.Graph);
                        inspectorUpdateDelegate?.Invoke();
                        m_updateNodeViewsCallback?.Invoke();
                    };
                }

                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node",
                                                                 () =>
                {       // upgrade
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    node.owner.messageManager.ClearNodesFromProvider(node.owner, new AbstractMaterialNode[] { node });
                    node.Dirty(ModificationScope.Graph);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                },
                                                                 dismissAction, deprecationText, buttonText, labelText, messageType);

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }

            PropertyDrawerUtils.AddDefaultNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);
            AddCustomNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            propertyVisualElement = null;

            return(nodeSettings);
        }
Exemplo n.º 8
0
 // Token: 0x06000BFA RID: 3066 RVA: 0x0005B854 File Offset: 0x00059C54
 public static TranslatedText getTranslatedNameText(this Type type)
 {
     object[] customAttributes = type.GetCustomAttributes(typeof(InspectableAttribute), false);
     if (customAttributes.Length > 0)
     {
         InspectableAttribute inspectableAttribute = customAttributes[0] as InspectableAttribute;
         return(new TranslatedText(inspectableAttribute.name));
     }
     return(new TranslatedTextFallback(type.Name));
 }
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node", () =>
                {
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }
            EnumField precisionField = null;

            if (node.canSetPrecision)
            {
                precisionField = new EnumField(node.precision);
                var propertyRow = new PropertyRow(new Label("Precision"));
                propertyRow.Add(precisionField, (field) =>
                {
                    field.RegisterValueChangedCallback(evt =>
                    {
                        if (evt.newValue.Equals(node.precision))
                        {
                            return;
                        }

                        m_setNodesAsDirtyCallback();
                        node.owner.owner.RegisterCompleteObjectUndo("Change precision");
                        node.precision = (Precision)evt.newValue;
                        node.owner.ValidateGraph();
                        m_updateNodeViewsCallback();
                        node.Dirty(ModificationScope.Graph);
                    });
                });
                if (node is Serialization.MultiJsonInternal.UnknownNodeType)
                {
                    precisionField.SetEnabled(false);
                }
                nodeSettings.Add(propertyRow);
            }
            propertyVisualElement = precisionField;
            return(nodeSettings);
        }
Exemplo n.º 10
0
 public VisualElement DrawProperty(
     PropertyInfo propertyInfo,
     object actualObject,
     InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                // Use the setter from the provided property as the callback
                newBoolValue => propertyInfo.GetSetMethod(true).Invoke(actualObject, new object[] { newBoolValue }),
                (ToggleData)propertyInfo.GetValue(actualObject),
                attribute.labelName,
                out var propertyVisualElement));
 }
Exemplo n.º 11
0
 public VisualElement DrawProperty(
     PropertyInfo propertyInfo,
     object actualObject,
     InspectableAttribute attribute)
 {
     return(this.CreateGUI(newEnumValue =>
                           propertyInfo.GetSetMethod(true).Invoke(actualObject, new object[] { newEnumValue }),
                           (Enum)propertyInfo.GetValue(actualObject),
                           attribute.labelName,
                           (Enum)attribute.defaultValue,
                           out var propertyVisualElement));
 }
Exemplo n.º 12
0
        VisualElement CreateGUI(SubGraphOutputNode node, InspectableAttribute attribute,
                                out VisualElement propertyVisualElement)
        {
            var propertySheet = new PropertySheet(PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold));
            var inputListView = new ReorderableSlotListView(node, SlotType.Input);

            inputListView.OnAddCallback           += list => inspectorUpdateDelegate();
            inputListView.OnRemoveCallback        += list => inspectorUpdateDelegate();
            inputListView.OnListRecreatedCallback += () => inspectorUpdateDelegate();
            propertySheet.Add(inputListView);
            propertyVisualElement = propertySheet;
            return(propertySheet);
        }
Exemplo n.º 13
0
        public VisualElement DrawProperty(
            PropertyInfo propertyInfo,
            object actualObject,
            InspectableAttribute attribute)
        {
            var propertySheet = new PropertySheet();

            shaderInput = actualObject as ShaderInput;
            BuildExposedField(propertySheet);
            BuildReferenceNameField(propertySheet);
            BuildPropertyFields(propertySheet);
            BuildKeywordFields(propertySheet, shaderInput);
            return(propertySheet);
        }
        VisualElement CreateGUI(SubGraphOutputNode node, InspectableAttribute attribute,
                                out VisualElement propertyVisualElement)
        {
            var propertySheet = new PropertySheet(PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold));

            PropertyDrawerUtils.AddDefaultNodeProperties(propertySheet, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            var inputListView = new ReorderableSlotListView(node, SlotType.Input, false);

            inputListView.OnAddCallback           += list => inspectorUpdateDelegate();
            inputListView.OnRemoveCallback        += list => inspectorUpdateDelegate();
            inputListView.OnListRecreatedCallback += () => inspectorUpdateDelegate();
            inputListView.AllowedTypeCallback      = SlotValueHelper.AllowedAsSubgraphOutput;
            propertySheet.Add(inputListView);
            propertyVisualElement = propertySheet;
            return(propertySheet);
        }
Exemplo n.º 15
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject, InspectableAttribute attribute)
 {
     return(this.CreateGUI((GraphData)actualObject));
 }
Exemplo n.º 16
0
        VisualElement CreateGUI(SampleVirtualTextureNode node, InspectableAttribute attribute,
                                out VisualElement propertyVisualElement)
        {
            PropertySheet propertySheet = new PropertySheet();

            var enumPropertyDrawer = new EnumPropertyDrawer();

            propertySheet.Add(enumPropertyDrawer.CreateGUI((newValue) =>
            {
                if (node.addressMode == (SampleVirtualTextureNode.AddressMode)newValue)
                {
                    return;
                }

                node.owner.owner.RegisterCompleteObjectUndo("Address Mode Change");
                node.addressMode = (SampleVirtualTextureNode.AddressMode)newValue;
            },
                                                           node.addressMode,
                                                           "Address Mode",
                                                           SampleVirtualTextureNode.AddressMode.VtAddressMode_Wrap,
                                                           out var addressModeVisualElement));

            propertySheet.Add(enumPropertyDrawer.CreateGUI((newValue) =>
            {
                if (node.lodCalculation == (SampleVirtualTextureNode.LodCalculation)newValue)
                {
                    return;
                }

                node.owner.owner.RegisterCompleteObjectUndo("Lod Mode Change");
                node.lodCalculation = (SampleVirtualTextureNode.LodCalculation)newValue;
            },
                                                           node.lodCalculation,
                                                           "Lod Mode",
                                                           SampleVirtualTextureNode.LodCalculation.VtLevel_Automatic,
                                                           out var lodCalculationVisualElement));

            propertySheet.Add(enumPropertyDrawer.CreateGUI((newValue) =>
            {
                if (node.sampleQuality == (SampleVirtualTextureNode.QualityMode)newValue)
                {
                    return;
                }

                node.owner.owner.RegisterCompleteObjectUndo("Quality Change");
                node.sampleQuality = (SampleVirtualTextureNode.QualityMode)newValue;
            },
                                                           node.sampleQuality,
                                                           "Quality",
                                                           SampleVirtualTextureNode.QualityMode.VtSampleQuality_High,
                                                           out var qualityVisualElement));

            var boolPropertyDrawer = new BoolPropertyDrawer();

            propertySheet.Add(boolPropertyDrawer.CreateGUI((newValue) =>
            {
                if (node.noFeedback == !newValue)
                {
                    return;
                }

                node.owner.owner.RegisterCompleteObjectUndo("Feedback Settings Change");
                node.noFeedback = !newValue;
            },
                                                           !node.noFeedback,
                                                           "Automatic Streaming",
                                                           out var propertyToggle));

            propertySheet.Add(boolPropertyDrawer.CreateGUI((newValue) =>
            {
                if (node.enableGlobalMipBias == newValue)
                {
                    return;
                }

                node.owner.owner.RegisterCompleteObjectUndo("Enable Global Mip Bias VT Change");
                node.enableGlobalMipBias = newValue;
            },
                                                           node.enableGlobalMipBias,
                                                           "Use Global Mip Bias",
                                                           out var enableGlobalMipBias));


            // display warning if the current master node doesn't support virtual texturing
            // TODO: Add warning when no active subTarget supports VT
            // if (!node.owner.isSubGraph)
            // {
            //     bool supportedByMasterNode =
            //         node.owner.GetNodes<IMasterNode>().FirstOrDefault()?.supportsVirtualTexturing ?? false;
            //     if (!supportedByMasterNode)
            //         propertySheet.Add(new HelpBoxRow(MessageType.Warning),
            //             (row) => row.Add(new Label(
            //                 "The current master node does not support Virtual Texturing, this node will do regular 2D sampling.")));
            // }

            // display warning if the current render pipeline doesn't support virtual texturing
            IVirtualTexturingEnabledRenderPipeline vtRp =
                GraphicsSettings.currentRenderPipeline as IVirtualTexturingEnabledRenderPipeline;

            if (vtRp == null)
            {
                propertySheet.Add(new HelpBoxRow(MessageType.Warning),
                                  (row) => row.Add(new Label(
                                                       "The current render pipeline does not support Virtual Texturing, this node will do regular 2D sampling.")));
            }
            else if (vtRp.virtualTexturingEnabled == false)
            {
                propertySheet.Add(new HelpBoxRow(MessageType.Warning),
                                  (row) => row.Add(new Label(
                                                       "The current render pipeline has disabled Virtual Texturing, this node will do regular 2D sampling.")));
            }
            else
            {
#if !ENABLE_VIRTUALTEXTURES
                propertySheet.Add(new HelpBoxRow(MessageType.Warning),
                                  (row) => row.Add(new Label(
                                                       "Virtual Texturing is disabled globally (possibly by the render pipeline settings), this node will do regular 2D sampling.")));
#endif
            }

            propertyVisualElement = propertySheet;
            return(propertySheet);
        }
Exemplo n.º 17
0
 public Descriptor(Component component, PropertyInfo info, InspectableAttribute attr)
 {
     this.component    = component;
     this.propertyInfo = info;
     this.attr         = attr;
 }
Exemplo n.º 18
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject, InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                (AbstractMaterialNode)actualObject,
                attribute,
                out var propertyVisualElement));
 }
Exemplo n.º 19
0
        public void reflect(ObjectInspectableInfo parent, object instance, Sleek2Element panel)
        {
            if (instance == null)
            {
                panel.addElement(new Sleek2Label
                {
                    transform =
                    {
                        anchorMin = new Vector2(0f, 1f),
                        anchorMax = new Vector2(1f, 1f),
                        pivot     = new Vector2(0f, 1f),
                        sizeDelta = new Vector2(0f, 30f)
                    },
                    textComponent =
                    {
                        text = "null"
                    }
                });
                return;
            }
            Type type = instance.GetType();

            if (type.IsArray)
            {
                Array newArray               = instance as Array;
                Type  elementType            = type.GetElementType();
                Sleek2InspectorArray element = new Sleek2InspectorArray(this, parent, newArray, elementType);
                panel.addElement(element);
            }
            else if (type.IsGenericType && typeof(IList).IsAssignableFrom(type))
            {
                IList               newList        = instance as IList;
                Type                newListType    = type.GetGenericArguments()[0];
                IInspectableList    newInspectable = instance as IInspectableList;
                Sleek2InspectorList element2       = new Sleek2InspectorList(this, parent, newList, newListType, newInspectable);
                panel.addElement(element2);
            }
            foreach (FieldInfo fieldInfo in type.GetFields(BindingFlags.Instance | BindingFlags.Public))
            {
                object[] customAttributes = fieldInfo.GetCustomAttributes(typeof(InspectableAttribute), false);
                if (customAttributes.Length > 0)
                {
                    InspectableAttribute inspectableAttribute = customAttributes[0] as InspectableAttribute;
                    Sleek2TypeInspector  sleek2TypeInspector  = TypeInspectorRegistry.inspect(fieldInfo.FieldType);
                    if (sleek2TypeInspector != null)
                    {
                        sleek2TypeInspector.inspect(new ObjectInspectableField(parent, fieldInfo, this.instance as IDirtyable, instance, inspectableAttribute.name, inspectableAttribute.tooltip));
                        panel.addElement(sleek2TypeInspector);
                    }
                    else
                    {
                        Sleek2InspectorFoldout sleek2InspectorFoldout = new Sleek2InspectorFoldout();
                        sleek2InspectorFoldout.transform.anchorMin = new Vector2(0f, 1f);
                        sleek2InspectorFoldout.transform.anchorMax = new Vector2(1f, 1f);
                        sleek2InspectorFoldout.transform.pivot     = new Vector2(0.5f, 1f);
                        sleek2InspectorFoldout.transform.sizeDelta = new Vector2(0f, (float)Sleek2Config.bodyHeight);
                        sleek2InspectorFoldout.label.translation   = new TranslatedText(inspectableAttribute.name);
                        sleek2InspectorFoldout.label.translation.format();
                        sleek2InspectorFoldout.label.tooltip = new TranslatedText(inspectableAttribute.tooltip);
                        sleek2InspectorFoldout.label.tooltip.format();
                        panel.addElement(sleek2InspectorFoldout);
                        this.reflect(new ObjectInspectableField(parent, fieldInfo, this.instance as IDirtyable, instance, TranslationReference.invalid, TranslationReference.invalid), fieldInfo.GetValue(instance), sleek2InspectorFoldout.contents);
                        if (this.collapseFoldoutsByDefault)
                        {
                            sleek2InspectorFoldout.isOpen = false;
                        }
                    }
                }
            }
            foreach (PropertyInfo propertyInfo in type.GetProperties(BindingFlags.Instance | BindingFlags.Public))
            {
                object[] customAttributes2 = propertyInfo.GetCustomAttributes(typeof(InspectableAttribute), false);
                if (customAttributes2.Length > 0)
                {
                    InspectableAttribute inspectableAttribute2 = customAttributes2[0] as InspectableAttribute;
                    Sleek2TypeInspector  sleek2TypeInspector2  = TypeInspectorRegistry.inspect(propertyInfo.PropertyType);
                    if (sleek2TypeInspector2 != null)
                    {
                        sleek2TypeInspector2.inspect(new ObjectInspectableProperty(parent, propertyInfo, this.instance as IDirtyable, instance, inspectableAttribute2.name, inspectableAttribute2.tooltip));
                        panel.addElement(sleek2TypeInspector2);
                    }
                    else
                    {
                        Sleek2InspectorFoldout sleek2InspectorFoldout2 = new Sleek2InspectorFoldout();
                        sleek2InspectorFoldout2.transform.anchorMin = new Vector2(0f, 1f);
                        sleek2InspectorFoldout2.transform.anchorMax = new Vector2(1f, 1f);
                        sleek2InspectorFoldout2.transform.pivot     = new Vector2(0.5f, 1f);
                        sleek2InspectorFoldout2.transform.sizeDelta = new Vector2(0f, (float)Sleek2Config.bodyHeight);
                        sleek2InspectorFoldout2.label.translation   = new TranslatedText(inspectableAttribute2.name);
                        sleek2InspectorFoldout2.label.translation.format();
                        sleek2InspectorFoldout2.label.tooltip = new TranslatedText(inspectableAttribute2.tooltip);
                        sleek2InspectorFoldout2.label.tooltip.format();
                        panel.addElement(sleek2InspectorFoldout2);
                        this.reflect(new ObjectInspectableProperty(parent, propertyInfo, this.instance as IDirtyable, instance, TranslationReference.invalid, TranslationReference.invalid), propertyInfo.GetValue(instance, null), sleek2InspectorFoldout2.contents);
                        if (this.collapseFoldoutsByDefault)
                        {
                            sleek2InspectorFoldout2.isOpen = false;
                        }
                    }
                }
            }
        }
Exemplo n.º 20
0
 public Descriptor(Component component, FieldInfo info, InspectableAttribute attr)
 {
     this.component = component;
     this.fieldInfo = info;
     this.attr      = attr;
 }
Exemplo n.º 21
0
 public Descriptor(Component component, FieldInfo info, InspectableAttribute attr)
 {
     this.component = component;
     this.info = info;
     this.attr = attr;
 }
Exemplo n.º 22
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject, InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                // Use the setter from the provided property as the callback
                newSelectedIndex => propertyInfo.GetSetMethod(true).Invoke(actualObject, new object[] { newSelectedIndex }),
                (IEnumerable <string>)propertyInfo.GetValue(actualObject),
                attribute.labelName,
                out var textArrayField));
 }
Exemplo n.º 23
0
 public VisualElement DrawProperty(PropertyInfo propertyInfo, object actualObject, InspectableAttribute attribute)
 {
     return(this.CreateGUI(
                // Use the setter from the provided property as the callback
                newValue => propertyInfo.GetSetMethod(true).Invoke(actualObject, new object[] { newValue }),
                (ShaderGUIOverrideInfo)propertyInfo.GetValue(actualObject),
                out var textArrayField));
 }