Exemplo n.º 1
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            string fieldToDraw,
            string labelName,
            out VisualElement propertyTextField,
            int indentLevel = 0)
        {
            var propertyRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            propertyTextField = new TextField(512, false, false, ' ')
            {
                isDelayed = true
            };
            propertyRow.Add((TextField)propertyTextField,
                            textField =>
            {
                textField.value = fieldToDraw;
            });

            if (valueChangedCallback != null)
            {
                var textField = (TextField)propertyTextField;
                textField.RegisterValueChangedCallback(evt => valueChangedCallback(evt.newValue));
            }

            propertyRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));
            return(propertyRow);
        }
Exemplo n.º 2
0
        public void EditRow(Row row)
        {
            property = row?.Components.Get <PropertyRow>();
            var   adapter = adapters[property.Animator.ValueType];
            float min, max;

            CalcRange(property.Animator, adapter, out min, out max);
            MinValue = min;
            MaxValue = max;
            toolbar.Nodes.Clear();
            for (int i = 0; i < adapter.ComponentCount; i++)
            {
                var color = ColorTheme.Current.TimelineCurveEditor.Curves[i];
                var curve = new Curve(property.Animator, i, adapter, color);
                Curves.Add(curve);
                toolbar.AddNode(new ColorBoxButton(color));
                var name  = adapter.GetComponentName(i) ?? property.Animator.TargetPropertyPath;
                var label = new ThemedSimpleText(name)
                {
                    MinWidth = 60
                };
                int c = i;
                label.AddChangeWatcher(
                    () => adapter.GetComponentValue(curve.Animator, Document.Current.Animation.Time, c),
                    v => label.Text = name + ": " + v.ToString("0.00"));
                toolbar.AddNode(label);
            }
        }
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            int fieldToDraw,
            string labelName,
            out VisualElement propertyFloatField,
            int indentLevel = 0)
        {
            var integerField = new IntegerField {
                value = fieldToDraw
            };

            if (valueChangedCallback != null)
            {
                integerField.RegisterValueChangedCallback(evt => { valueChangedCallback(evt.newValue); });
            }

            propertyFloatField = integerField;

            var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            defaultRow.Add(propertyFloatField);

            defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));
            return(defaultRow);
        }
        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);
        }
Exemplo n.º 5
0
            public static BacksightDataSet.PropertyRow CreatePropertyRow(BacksightDataSet ds)
            {
                PropertyRow result = ds.Property.NewPropertyRow();

                result.Name = result.Value = result.Description = String.Empty;
                return(result);
            }
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            Gradient fieldToDraw,
            string labelName,
            out VisualElement propertyGradientField,
            int indentLevel = 0)
        {
            var objectField = new GradientField {
                value = fieldToDraw
            };

            if (valueChangedCallback != null)
            {
                objectField.RegisterValueChangedCallback(evt => { valueChangedCallback((Gradient)evt.newValue); });
            }

            propertyGradientField = objectField;

            // Any core widgets used by the inspector over and over should come from some kind of factory
            var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            defaultRow.Add(propertyGradientField);
            defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));
            return(defaultRow);
        }
Exemplo n.º 7
0
        public void AddLabel(string label, int indentLevel)
        {
            var propertyRow = new PropertyRow(new Label(label));

            ApplyPadding(propertyRow, indentLevel);
            this.hierarchy.Add(propertyRow);
        }
Exemplo n.º 8
0
            /// <summary>
            /// adds <paramref name="propertyRow"/> to <see cref="PropertyTable"/>'s row list.
            /// </summary>
            /// <param name="propertyRow"></param>
            /// <exception cref="Table.RowColumnCountMismatchException">
            /// <seealso cref="Table.AddRow(Row)"/>
            /// </exception>
            /// <exception cref="RowAndColumnPropertyMismatchException">
            /// <seealso cref="assertRowPropertiesMatchColumns(PropertyRow)"/>
            /// </exception>
            public void AddRow(PropertyRow propertyRow)
            {
                table.AddRow(propertyRow);

                // assert row properties match those of the corresponding table columns
                assertRowPropertiesMatchColumns(propertyRow);
            }
Exemplo n.º 9
0
        internal override void AddCustomNodeProperties(VisualElement parentElement, AbstractMaterialNode nodeBase, Action setNodesAsDirtyCallback, Action updateNodeViewsCallback)
        {
            node = nodeBase as TransformNode;

            var normalizeControl = new Toggle();

            normalizeControl.value = node.normalize;

            normalizePropRow = new PropertyRow(new Label("Normalize Output"));
            normalizePropRow.Add(normalizeControl, (field) =>
            {
                field.RegisterValueChangedCallback(evt =>
                {
                    if (evt.newValue.Equals(node.normalize))
                    {
                        return;
                    }

                    setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo("Change normalize");
                    node.normalize = evt.newValue;
                    updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });
            });
            parentElement.Add(normalizePropRow);

            UpdateVisibility();

            node.RegisterCallback(OnNodeModified);
        }
Exemplo n.º 10
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            ToggleData fieldToDraw,
            string labelName,
            out VisualElement propertyToggle,
            int indentLevel = 0)
        {
            var row = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            // Create and assign toggle as out variable here so that callers can also do additional work with enabling/disabling if needed
            propertyToggle = new Toggle();
            row.Add((Toggle)propertyToggle, (toggle) =>
            {
                toggle.value = fieldToDraw.isOn;
            });

            if (valueChangedCallback != null)
            {
                var toggle = (Toggle)propertyToggle;
                toggle.OnToggleChanged(evt => valueChangedCallback(new ToggleData(evt.newValue)));
            }

            row.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));
            return(row);
        }
Exemplo n.º 11
0
        void ReadProperties()
        {
            if (!m_tHeap.HasTable(PropertyTable.RId))
            {
                m_properties = new PropertyDefinition [0];
                return;
            }

            PropertyTable    propsTable = m_tableReader.GetPropertyTable();
            PropertyMapTable pmapTable  = m_tableReader.GetPropertyMapTable();

            m_properties = new PropertyDefinition [propsTable.Rows.Count];
            for (int i = 0; i < pmapTable.Rows.Count; i++)
            {
                PropertyMapRow pmapRow = pmapTable [i];
                if (pmapRow.Parent == 0)
                {
                    continue;
                }

                TypeDefinition owner = GetTypeDefAt(pmapRow.Parent);

                GenericContext context = new GenericContext(owner);

                int start = (int)pmapRow.PropertyList, last = propsTable.Rows.Count + 1, end;
                if (i < pmapTable.Rows.Count - 1)
                {
                    end = (int)pmapTable [i + 1].PropertyList;
                }
                else
                {
                    end = last;
                }

                if (end > last)
                {
                    end = last;
                }

                for (int j = start; j < end; j++)
                {
                    PropertyRow        prow = propsTable [j - 1];
                    PropertySig        psig = m_sigReader.GetPropSig(prow.Type);
                    PropertyDefinition pdef = new PropertyDefinition(
                        m_root.Streams.StringsHeap [prow.Name],
                        GetTypeRefFromSig(psig.Type, context),
                        prow.Flags);
                    pdef.MetadataToken = MetadataToken.FromMetadataRow(TokenType.Property, j - 1);

                    pdef.PropertyType = GetModifierType(psig.CustomMods, pdef.PropertyType);

                    if (!IsDeleted(pdef))
                    {
                        owner.Properties.Add(pdef);
                    }

                    m_properties [j - 1] = pdef;
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Parse the RopGetReceiveFolderTableResponse structure.
        /// </summary>
        /// <param name="s">An stream containing RopGetReceiveFolderTableResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId            = (RopIdType)ReadByte();
            this.InputHandleIndex = ReadByte();
            List <PropertyRow> TmpRows = new List <PropertyRow>();
            HelpMethod         help    = new HelpMethod();

            this.ReturnValue = help.FormatErrorCode(ReadUint());
            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.RowCount = ReadUint();

                for (int i = 0; i < this.RowCount; i++)
                {
                    // PidTagMessageClass is defined as PtypString8 due to Open Specification said all characters in this property MUST be from the
                    // ASCII characters 0x20 through 0x7F.
                    PropertyTag[] Properties_GetReceiveFolderTable = new PropertyTag[3]
                    {
                        new PropertyTag(PropertyDataType.PtypInteger64, PidTagPropertyEnum.PidTagFolderId),
                        new PropertyTag(PropertyDataType.PtypString8, PidTagPropertyEnum.PidTagMessageClass),
                        new PropertyTag(PropertyDataType.PtypTime, PidTagPropertyEnum.PidTagLastModificationTime)
                    };
                    PropertyRow ProRow = new PropertyRow(Properties_GetReceiveFolderTable);
                    ProRow.Parse(s);
                    TmpRows.Add(ProRow);
                }
                this.Rows = TmpRows.ToArray();
            }
        }
Exemplo n.º 13
0
        internal static void AddCustomEnumProperty <T>(
            VisualElement parentElement, AbstractMaterialNode node,
            Action setNodesAsDirtyCallback, Action updateNodeViewsCallback,
            String label,
            String undoLabel,
            Func <T> GetterFn,
            Action <T> SetterFn) where T : System.Enum, IConvertible
        {
            var fieldObj = new EnumField(GetterFn());
            //fieldObj.value = ;
            var propertyRow = new PropertyRow(new Label(label));

            propertyRow.Add(fieldObj, (field) =>
            {
                field.RegisterValueChangedCallback(evt =>
                {
                    if (evt.newValue.Equals(GetterFn()))
                    {
                        return;
                    }

                    setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo(undoLabel);
                    SetterFn((T)evt.newValue);
                    node.owner.ValidateGraph();
                    updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });
            });
            if (node is Serialization.MultiJsonInternal.UnknownNodeType)
            {
                fieldObj.SetEnabled(false);
            }
            parentElement.Add(propertyRow);
        }
Exemplo n.º 14
0
 public override void FromRawData(byte [] buff, int offs, int numRows)
 {
     for (int i = numRows; --i >= 0;)
     {
         Row row = new PropertyRow(this);
         row.FromRawData(buff, offs);
         Add(row);
         offs += PropertyRow.LogicalSize;
     }
 }
        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.º 16
0
        private void ShowHotkeyWindow(Hotkey hotkey, LabelProperty prop, int kbindex)
        {
            PropertyRow row = (PropertyRow)prop.Parent;
            var         wnd = new RebindHotkeyWindow(_canvas, row.Label.ToString());

            wnd.KeybindChanged += (x, newbind) =>
            {
                TryNewKeybind(hotkey, newbind, kbindex);
            };
            wnd.ShowCentered();
        }
Exemplo n.º 17
0
        /// <summary>
        /// Reads the specified token.
        /// </summary>
        /// <param name="token">The token.</param>
        /// <param name="result">The result.</param>
        public void Read(TokenTypes token, out PropertyRow result)
        {
            if ((token & TokenTypes.TableMask) != TokenTypes.Property)
            {
                throw new ArgumentException("Invalid token type for PropertyRow.", "token");
            }

            using (BinaryReader reader = CreateReaderForToken(token))
            {
                result = new PropertyRow((PropertyAttributes)reader.ReadUInt16(), ReadIndexValue(reader, IndexType.StringHeap), ReadIndexValue(reader, IndexType.BlobHeap));
            }
        }
Exemplo n.º 18
0
            /// <summary>
            /// asserts that <paramref name="propertyRow"/>'s column properties match
            /// <see cref="PropertyTable"/>'s column properties.
            /// </summary>
            /// <param name="propertyRow"></param>
            /// <exception cref="RowAndColumnPropertyMismatchException">
            /// thrown if <paramref name="propertyRow"/>'s column properties did not match
            /// <see cref="PropertyTable"/>'s column properties.
            /// </exception>
            private void assertRowPropertiesMatchColumns(PropertyRow propertyRow)
            {
                for (int i = 0; i < propertyRow.Properties.Length; i++)
                {
                    Property currentColumnProperty = columnProperties[i];
                    Property currentRowProperty    = propertyRow.Properties[i];

                    if (currentColumnProperty != currentRowProperty)
                    {
                        throw new RowAndColumnPropertyMismatchException(i);
                    }
                }
            }
Exemplo n.º 19
0
        public void AddProperty <T>(string label, int indentLevel, BaseField <T> field, EventCallback <ChangeEvent <T> > evt)
        {
            if (field is INotifyValueChanged <T> notifyValueChanged)
            {
                notifyValueChanged.RegisterValueChangedCallback(evt);
            }

            var propertyRow = new PropertyRow(new Label(label));

            ApplyPadding(propertyRow, indentLevel);
            propertyRow.Add(field);
            this.hierarchy.Add(propertyRow);
        }
Exemplo n.º 20
0
                public override bool Equals(object obj)
                {
                    if (obj == null)
                    {
                        return(false);
                    }

                    PropertyRow other = obj as PropertyRow;

                    return(other != null &&
                           base.Equals(other) &&
                           Enumerable.SequenceEqual(this.properties, other.properties));
                }
Exemplo n.º 21
0
        public void Execute()
        {
            // Create the special properties.
            if (null != this.WixPropertyTable)
            {
                // Create lists of the properties that contribute to the special lists of properties.
                SortedSet <string> adminProperties  = new SortedSet <string>();
                SortedSet <string> secureProperties = new SortedSet <string>();
                SortedSet <string> hiddenProperties = new SortedSet <string>();

                foreach (WixPropertyRow wixPropertyRow in this.WixPropertyTable.Rows)
                {
                    if (wixPropertyRow.Admin)
                    {
                        adminProperties.Add(wixPropertyRow.Id);
                    }

                    if (wixPropertyRow.Hidden)
                    {
                        hiddenProperties.Add(wixPropertyRow.Id);
                    }

                    if (wixPropertyRow.Secure)
                    {
                        secureProperties.Add(wixPropertyRow.Id);
                    }
                }

                Table propertyTable = this.PropertyTable;
                if (0 < adminProperties.Count)
                {
                    PropertyRow row = (PropertyRow)propertyTable.CreateRow(null);
                    row.Property = "AdminProperties";
                    row.Value    = String.Join(";", adminProperties);
                }

                if (0 < secureProperties.Count)
                {
                    PropertyRow row = (PropertyRow)propertyTable.CreateRow(null);
                    row.Property = "SecureCustomProperties";
                    row.Value    = String.Join(";", secureProperties);
                }

                if (0 < hiddenProperties.Count)
                {
                    PropertyRow row = (PropertyRow)propertyTable.CreateRow(null);
                    row.Property = "MsiHiddenProperties";
                    row.Value    = String.Join(";", hiddenProperties);
                }
            }
        }
Exemplo n.º 22
0
        internal override void AddCustomNodeProperties(VisualElement parentElement, AbstractMaterialNode nodeBase, Action setNodesAsDirtyCallback, Action updateNodeViewsCallback)
        {
            node = nodeBase as TriplanarNode;

            var previewField = new EnumField(node.inputSpace);

            inputPropRow = new PropertyRow(new Label("Input Space"));
            inputPropRow.Add(previewField, (field) =>
            {
                field.RegisterValueChangedCallback(evt =>
                {
                    if (evt.newValue.Equals(node.inputSpace))
                    {
                        return;
                    }

                    setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo("Change normal input space");
                    node.inputSpace = (CoordinateSpace)evt.newValue;
                    updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });
            });
            parentElement.Add(inputPropRow);

            previewField        = new EnumField(node.normalOutputSpace);
            normalOutputPropRow = new PropertyRow(new Label("Normal Output Space"));
            normalOutputPropRow.Add(previewField, (field) =>
            {
                field.RegisterValueChangedCallback(evt =>
                {
                    if (evt.newValue.Equals(node.normalOutputSpace))
                    {
                        return;
                    }

                    setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo("Change normal output space");
                    node.normalOutputSpace = (CoordinateSpace)evt.newValue;
                    updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });
            });
            parentElement.Add(normalOutputPropRow);

            UpdateVisibility();

            node.RegisterCallback(OnNodeModified);
        }
Exemplo n.º 23
0
        public PropertiesTest(ControlBase parent)
            : base(parent)
        {
            {
                Properties props = new Properties(this);
                props.Dock          = Dock.Top;
                props.Width         = 300;
                props.ValueChanged += OnChanged;

                {
                    {
                        PropertyRow pRow = props.Add("First Name");
                    }

                    props.Add("Middle Name");
                    props.Add("Last Name");
                }
            }

            {
                PropertyTree ptree = new PropertyTree(this);
                ptree.Dock              = Dock.Top;
                ptree.Width             = 300;
                ptree.AutoSizeToContent = true;

                {
                    Properties props = ptree.Add("Item One");
                    props.ValueChanged += OnChanged;

                    props.Add("Middle Name");
                    props.Add("Last Name");
                    props.Add("Four");
                }

                {
                    Properties props = ptree.Add("Item Two");
                    props.ValueChanged += OnChanged;

                    props.Add("More Items");
                    props.Add("Bacon", new CheckProperty(props), "1");
                    props.Add("To Fill");
                    props.Add("Color", new ColorProperty(props), "255 0 0");
                    props.Add("Out Here");
                }

                ptree.ExpandAll();
            }
        }
Exemplo n.º 24
0
        private void populate_property_rows(ObservableCollection <PropertyRow> prop_rows, List <string> path, CharDictProperty prop)
        {
            List <string> prop_names = new List <string>(prop.value.Keys);

            prop_names.Sort();
            foreach (string prop_name in prop_names)
            {
                List <string> row_path = new List <string>(path);
                row_path.Add(prop_name);
                PropertyRow row = null;
                if (prop.value[prop_name] is CharTextProperty text_prop)
                {
                    row = new PropertyRow(prop_name, row_path, text_prop.value);
                }
                else if (prop.value[prop_name] is CharNumProperty num_prop)
                {
                    row = new PropertyRow(prop_name, row_path, num_prop.value.ToString());
                }
                else if (prop.value[prop_name] is CharSetProperty set_prop)
                {
                    row = new PropertyRow(prop_name, row_path);
                    List <string> members = new List <string>(set_prop.value);
                    members.Sort();
                    foreach (string member in members)
                    {
                        List <string> member_path = new List <string>(row_path);
                        member_path.Add(member);
                        row.children.Add(new PropertyRow(member, member_path));
                    }
                }
                else if (prop.value[prop_name] is CharDictProperty dict_prop)
                {
                    row = new PropertyRow(prop_name, row_path);
                    this.populate_property_rows(row.children, row_path, dict_prop);
                }
                if (row is not null)
                {
                    prop_rows.Add(row);
                }
            }
        }
Exemplo n.º 25
0
        internal override void AddCustomNodeProperties(VisualElement parentElement, AbstractMaterialNode nodeBase, Action setNodesAsDirtyCallback, Action updateNodeViewsCallback)
        {
            var node = nodeBase as ProceduralVirtualTextureNode;

            var hlslDecls    = Enum.GetValues(typeof(HLSLDeclaration));
            var allowedDecls = new List <HLSLDeclaration>();

            for (int i = 0; i < hlslDecls.Length; i++)
            {
                HLSLDeclaration decl    = (HLSLDeclaration)hlslDecls.GetValue(i);
                var             allowed = node.AllowHLSLDeclaration(decl);
                if (allowed)
                {
                    allowedDecls.Add(decl);
                }
            }

            var propertyRow = new PropertyRow(new Label("Shader Declaration"));
            var popupField  = new PopupField <HLSLDeclaration>(
                allowedDecls,
                node.shaderDeclaration,
                (h => allHLSLDeclarationStrings[(int)h]),
                (h => allHLSLDeclarationStrings[(int)h]));

            popupField.RegisterValueChangedCallback(
                evt =>
            {
                if (node.shaderDeclaration == evt.newValue)
                {
                    return;
                }

                setNodesAsDirtyCallback?.Invoke();
                node.owner.owner.RegisterCompleteObjectUndo("Change PVT shader declaration");
                node.shaderDeclaration = (UnityEditor.ShaderGraph.Internal.HLSLDeclaration)evt.newValue;
                updateNodeViewsCallback?.Invoke();
                node.Dirty(ModificationScope.Graph);
            });
            propertyRow.Add(popupField);
            parentElement.Add(propertyRow);
        }
Exemplo n.º 26
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            IEnumerable <string> fieldToDraw,
            string labelName,
            out VisualElement textArrayField,
            int indentLevel = 0)
        {
            var propertyRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            textArrayField = new PopupField <string>(fieldToDraw.ToList(), 0);
            propertyRow.Add(textArrayField);
            var popupField = (PopupField <string>)textArrayField;

            popupField.RegisterValueChangedCallback(evt =>
            {
                valueChangedCallback(popupField.index);
            });
            propertyRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));

            return(propertyRow);
        }
Exemplo n.º 27
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            Vector4 fieldToDraw,
            string labelName,
            out VisualElement propertyVec4Field,
            int indentLevel = 0)
        {
            var vector4Field = new Vector4Field {
                value = fieldToDraw
            };

            var inputFields = vector4Field.Query("unity-text-input").ToList();

            foreach (var inputField in inputFields)
            {
                inputField.RegisterCallback <KeyDownEvent>(m_KeyDownCallback);
                inputField.RegisterCallback <FocusOutEvent>(m_FocusOutCallback);
            }

            vector4Field.RegisterValueChangedCallback(evt =>
            {
                // Only true when setting value via FieldMouseDragger
                // Undo recorded once per dragger release
                if (mUndoGroup == -1)
                {
                    preValueChangeCallback?.Invoke();
                }

                valueChangedCallback(evt.newValue);
                postValueChangeCallback?.Invoke();
            });

            propertyVec4Field = vector4Field;

            var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            defaultRow.Add(propertyVec4Field);
            defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow"));
            return(defaultRow);
        }
Exemplo n.º 28
0
 public RollPropertyView(Row row)
 {
     this.row = row;
     propRow  = row.Components.Get <PropertyRow>();
     label    = new ThemedSimpleText {
         Text           = propRow.Animator.TargetPropertyPath,
         ForceUncutText = false,
         VAlignment     = VAlignment.Center,
         OverflowMode   = TextOverflowMode.Ellipsis,
         LayoutCell     = new LayoutCell(Alignment.LeftCenter, float.MaxValue)
     };
     propIcon = new Image {
         LayoutCell = new LayoutCell(Alignment.Center),
         Texture    = IconPool.GetTexture("Nodes.Unknown"),
         MinMaxSize = new Vector2(16, 16)
     };
     widget = new Widget {
         Padding = new Thickness {
             Left = 4, Right = 2
         },
         MinHeight = TimelineMetrics.DefaultRowHeight,
         Layout    = new HBoxLayout {
             DefaultCell = new DefaultLayoutCell(Alignment.Center)
         },
         Nodes =
         {
             (spacer = new Widget()),
             Spacer.HSpacer(6),
             propIcon,
             Spacer.HSpacer(3),
             label,
             CreateLockAnimationButton(),
             Spacer.HSpacer(Theme.Metrics.DefaultToolbarButtonSize.X),
             Spacer.HSpacer(Theme.Metrics.DefaultToolbarButtonSize.X)
         },
     };
     widget.Components.Add(new AwakeBehavior());
     widget.CompoundPresenter.Push(new SyncDelegatePresenter <Widget>(RenderBackground));
 }
Exemplo n.º 29
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            Color fieldToDraw,
            string labelName,
            out VisualElement propertyColorField,
            int indentLevel = 0)
        {
            var colorField = new ColorField {
                value = fieldToDraw, showEyeDropper = false, hdr = false
            };

            if (valueChangedCallback != null)
            {
                colorField.RegisterValueChangedCallback(evt => { valueChangedCallback((Color)evt.newValue); });
            }

            propertyColorField = colorField;

            var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            defaultRow.Add(propertyColorField);
            return(defaultRow);
        }
Exemplo n.º 30
0
        internal VisualElement CreateGUI(
            ValueChangedCallback valueChangedCallback,
            Enum fieldToDraw,
            string labelName,
            Enum defaultValue,
            out VisualElement propertyVisualElement,
            int indentLevel = 0)
        {
            var row = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel));

            propertyVisualElement = new EnumField(defaultValue);
            row.Add((EnumField)propertyVisualElement, (field) =>
            {
                field.value = fieldToDraw;
            });

            if (valueChangedCallback != null)
            {
                var enumField = (EnumField)propertyVisualElement;
                enumField.RegisterValueChangedCallback(evt => valueChangedCallback(evt.newValue));
            }

            return(row);
        }
Exemplo n.º 31
0
 public virtual void VisitPropertyRow(PropertyRow row)
 {
 }