コード例 #1
0
        // -----------------------------------------------------------------------------------------

        public void Generate_Subscriber_Grid_Spacing_Field()
        {
            var v2 = new Vector2Property();

            v2.PropertyName  = _TranzmitGraphView.GridLayoutSpacing_Subscriber.PropertyName;
            v2.PropertyValue = _TranzmitGraphView.GridLayoutSpacing_Subscriber.PropertyValue;

            var visualElement   = new VisualElement();
            var blackboardField = new BlackboardField {
                text = v2.PropertyName, typeText = ""
            };

            visualElement.Add(blackboardField);

            var field = new Vector2Field("Value:");

            field.value = v2.PropertyValue;

            field.RegisterValueChangedCallback(ChangeEvent =>
            {
                _TranzmitGraphView.GridLayoutSpacing_Subscriber.PropertyValue = field.value;

                if (_TranzmitGraphView.CurrentArrangementType == Tranzmit_Graph_View.ArrangementTypes.Grid)
                {
                    _TranzmitGraphView.Arrange_Subscriber_Results(Tranzmit_Graph_View.ArrangementTypes.Grid);
                }
            });

            var blackBoardValueRow = new BlackboardRow(blackboardField, field);

            visualElement.Add(blackBoardValueRow);

            _TranzmitGraphView.Blackboard.Add(visualElement);
        }
コード例 #2
0
        public BlackboardPropertyView(BlackboardField field, EditorView editorView, AbstractProperty property)
        {
            this.AddStyleSheet("Styles/PropertyView/Blackboard");
            this.field      = field;
            this.editorView = editorView;
            this.property   = property;
            rows            = new List <VisualElement>();

            keyDownCallback = evt => {
                // Record Undo for input field edit
                if (undoGroup == -1)
                {
                    undoGroup = Undo.GetCurrentGroup();
                    editorView.DlogObject.RegisterCompleteObjectUndo("Change property value");
                }

                // Handle escaping input field edit
                if (evt.keyCode == KeyCode.Escape && undoGroup > -1)
                {
                    Undo.RevertAllDownToGroup(undoGroup);
                    undoGroup = -1;
                    evt.StopPropagation();
                }

                // Dont record Undo again until input field is unfocused
                undoGroup++;
                MarkDirtyRepaint();
            };

            focusOutCallback = evt => undoGroup = -1;

            BuildFields(property);
            AddToClassList("blackboardPropertyView");
        }
コード例 #3
0
        // -----------------------------------------------------------------------------------------

        public void Generate_Broadcaster_Vertical_Spacing_Field()
        {
            var floatProp = new FloatProperty();

            floatProp.PropertyName  = _TranzmitGraphView.VerticalYSpacing_Broadcaster.PropertyName;
            floatProp.PropertyValue = _TranzmitGraphView.VerticalYSpacing_Broadcaster.PropertyValue;

            var visualElement   = new VisualElement();
            var blackboardField = new BlackboardField {
                text = floatProp.PropertyName, typeText = ""
            };

            visualElement.Add(blackboardField);

            var field = new FloatField("Value:");

            field.value = floatProp.PropertyValue;

            field.RegisterValueChangedCallback(ChangeEvent =>
            {
                _TranzmitGraphView.VerticalYSpacing_Broadcaster.PropertyValue = field.value;

                if (_TranzmitGraphView.CurrentArrangementType == Tranzmit_Graph_View.ArrangementTypes.Vertical)
                {
                    _TranzmitGraphView.Arrange_Broadcaster_Results(Tranzmit_Graph_View.ArrangementTypes.Vertical);
                }
            });

            var blackBoardValueRow = new BlackboardRow(blackboardField, field);

            visualElement.Add(blackBoardValueRow);

            _TranzmitGraphView.Blackboard.Add(visualElement);
        }
コード例 #4
0
        // -----------------------------------------------------------------------------------------

        public void Generate_BlackBoard_Error_Color_Field()
        {
            var color = new ColorProperty();

            color.PropertyName  = _TranzmitGraphView.ErrorColor.PropertyName;
            color.PropertyValue = _TranzmitGraphView.ErrorColor.PropertyValue;

            var visualElement   = new VisualElement();
            var blackboardField = new BlackboardField {
                text = color.PropertyName, typeText = ""
            };

            visualElement.Add(blackboardField);

            var field = new ColorField("Value:");

            field.value = color.PropertyValue;

            field.RegisterValueChangedCallback(ChangeEvent =>
            {
                _TranzmitGraphView.ErrorColor.PropertyValue = field.value;
                _TranzmitGraphView.UpdateErrorColorsOnGraphElements();
            });

            var blackBoardValueRow = new BlackboardRow(blackboardField, field);

            visualElement.Add(blackBoardValueRow);

            _TranzmitGraphView.Blackboard.Add(visualElement);
        }
コード例 #5
0
    internal void AddPropertyToBlackBoard(ExposedProperty exposedProperty)
    {
        var localPropertyName  = exposedProperty.PropertyName;
        var localPropertyValue = exposedProperty.PropertyValue;

        while (ExposedProperties.Any(x => x.PropertyName == localPropertyName))
        {
            localPropertyName = $"{localPropertyName}(1)"; // Username || Username(1)
        }
        var property = new ExposedProperty();

        property.PropertyName  = localPropertyName;
        property.PropertyValue = localPropertyValue;
        ExposedProperties.Add(property);

        var container       = new VisualElement();
        var blackboardField = new BlackboardField {
            text = property.PropertyName, typeText = "string property"
        };
        var propertyValueTextField = new TextField("Value: ")
        {
            value = localPropertyValue
        };

        propertyValueTextField.RegisterValueChangedCallback(evt =>
        {
            var changingPropertyIndex = ExposedProperties.FindIndex(x => x.PropertyName == property.PropertyName);
            ExposedProperties[changingPropertyIndex].PropertyValue = evt.newValue;
        });
        var blackBoardValueRow = new BlackboardRow(blackboardField, propertyValueTextField);

        container.Add(blackBoardValueRow);

        Blackboard.Add(container);
    }
コード例 #6
0
ファイル: Blackboard.cs プロジェクト: whuop/NodeGraph
        public Blackboard(VisualElement visualParent, GraphView graph)
        {
            m_visualParent = visualParent;
            UnityEditor.Experimental.GraphView.Blackboard bb = new UnityEditor.Experimental.GraphView.Blackboard(graph);
            //bb.subTitle = string.Empty;
            //m_visualParent.Add(bb);
            graph.Add(bb);

            bb.title = "Test Blackboard";

            BlackboardSection bbSection = new BlackboardSection();

            bbSection.title         = "Section Test Name";
            bbSection.headerVisible = true;
            bb.Add(bbSection);

            BlackboardField bbField = new BlackboardField();

            bbField.title = "TestVariable";
            bbField.text  = "TestText";
            //bbSection.Add(bbField);

            BlackboardRow bbRow = new BlackboardRow(bbField, new VisualElement());

            bbSection.Add(bbRow);
            bbSection.Add(bbRow);

            Debug.Log($"Is Field Droppable {bbField.IsDroppable()}");
        }
コード例 #7
0
        private VisualElement GenerateBlackboardField(ExposedProperty property)
        {
            var container       = new VisualElement();
            var blackboardField = new BlackboardField
            {
                text     = property.propertyName,
                typeText = "String",
            };

            container.Add(blackboardField);

            var propertyValueTextField = new TextField("Value:");

            propertyValueTextField.Q(className: "unity-label").style.minWidth = 50;
            propertyValueTextField.value = property.propertyValue;
            propertyValueTextField.RegisterValueChangedCallback(evt =>
            {
                int changingPropertyIndex = graphView.exposedProperties.FindIndex(
                    exposedProperty => exposedProperty.propertyName == property.propertyName);
                graphView.exposedProperties[changingPropertyIndex].propertyValue = evt.newValue;
            });

            var blackboardValueRow = new BlackboardRow(propertyValueTextField, propertyValueTextField);

            container.Add(blackboardValueRow);

            return(container);
        }
コード例 #8
0
        /// <summary>
        /// The Blackboard contains the values of each Exposed Property
        /// This Method allows us to create a new exposed property and adds it to the BlackBoard
        /// </summary>
        /// <param name="exposedProperty"></param>
        /// <param name="refreshing"></param>
        public void AddPropertyToBlackBoard(Runtime.ExposedProperty exposedProperty, bool refreshing = false)
        {
            var localPropertyName  = exposedProperty.PropertyName;
            var localPropertyValue = exposedProperty.PropertyValue;


            while (ExposedProperties.Any(x => x.PropertyName == localPropertyName) && !refreshing)
            {
                localPropertyName = $"{localPropertyName}(1)";
            }

            if (!refreshing)
            {
                var property = new Runtime.ExposedProperty();
                property.PropertyName  = localPropertyName;
                property.PropertyValue = localPropertyValue;

                ExposedProperties.Add(property);
            }
            int j = ExposedProperties.Count - 1;

            var container       = new VisualElement();
            var blackboardField = new BlackboardField {
                text = localPropertyName, typeText = "string"
            };

            blackboardField.Add(new Button(() => { RemovePropertyFromBlackboard(j); })
            {
                text = "x"
            });

            container.Add(blackboardField);

            var propertyValueTextField = new TextField(label: "Value:")
            {
                value = localPropertyValue
            };

            propertyValueTextField.RegisterValueChangedCallback(evt => {
                int i = j;

                var changingPropertyIndex = ExposedProperties.FindIndex(x => x.PropertyName == localPropertyName);


                ExposedProperties[i].PropertyValue = evt.newValue;
            });

            var blackBoardValueRow = new BlackboardRow(blackboardField, propertyValueTextField);

            container.Add(blackBoardValueRow);

            _blackboard.Add(container);
            if (_dialogueGraph.GetAutoSave())
            {
                _dialogueGraph.RequestDataOperation(true);
            }
        }
        public IEnumerator BlackboardSelectionIsRestoredWhenEnteringPlaymode_AddFieldsAfterAddingBBToGV()
        {
            { // Create initial blackboard.
                var blackboard = new Blackboard();
                blackboard.SetupBuildAndUpdate(null, CommandDispatcher, graphView);

                var inSection = new BlackboardSection(blackboard, "Section 1");
                blackboard.Add(inSection);

                var field = new BlackboardField {
                    viewDataKey = "bfield"
                };
                var propertyView = new Label("Prop");
                var row          = new BlackboardRow();
                row.Add(field);
                row.Add(propertyView);
                inSection.Add(row);

                graphView.AddElement(blackboard);

                CommandDispatcher.Dispatch(new SelectElementsCommand(SelectElementsCommand.SelectionMode.Add, row.Model));

                Assert.True(row.IsSelected());
            }

            // Allow 1 frame to let the persistent data get saved
            yield return(null);

            // This will re-create the window, flushing all temporary state
            yield return(new EnterPlayMode());

            // Allow 1 frame to let the persistence be restored
            yield return(null);

            { // Add blackboard to graphview first then add field to blackboard.
                var blackboard = new Blackboard();
                blackboard.SetupBuildAndUpdate(null, CommandDispatcher, graphView);

                graphView.AddElement(blackboard);

                var inSection = new BlackboardSection(blackboard, "Section 1");
                blackboard.Add(inSection);

                var field = new BlackboardField {
                    viewDataKey = "bfield"
                };
                var propertyView = new Label("Prop");
                var row          = new BlackboardRow();
                row.Add(field);
                row.Add(propertyView);
                inSection.Add(row);

                Assert.True(row.IsSelected());
            }
        }
コード例 #10
0
ファイル: AIGraphView.cs プロジェクト: hagusen/AI-Testing
    public void AddPropertyToBlackBoard(ExposedVariable exposedVariable)
    {
        var localVariableName  = exposedVariable.variableName;
        var localVariableValue = exposedVariable.variableValue;

        int iterator = 1;

        while (exposedVariables.Any(x => x.variableName == localVariableName))
        {
            localVariableName = $"{localVariableName}({iterator})";
            iterator++;

            /* FIX Later
             * if (localVariableName.Contains($"({iterator - 1})")) {
             *  localVariableName = $"{localVariableName.Substring(0, localVariableName.Length -3}" +"({iterator})";
             * }
             */
        }


        var variable = new ExposedVariable();

        variable.variableName  = localVariableName;
        variable.variableValue = localVariableValue;
        exposedVariables.Add(variable);


        var container       = new VisualElement();
        var blackboardField = new BlackboardField {
            text = variable.variableName, typeText = "int variable"
        };

        // blackboardField.RegisterCallback<DragAndDrop>(evt => { });
        container.Add(blackboardField);


        var variableValueTextField = new TextField("Value:")
        {
            value = variable.variableValue
        };

        variableValueTextField.RegisterValueChangedCallback(evt => {
            var changingVariableIndex = exposedVariables.FindIndex(x => x.variableName == variable.variableName);
            exposedVariables[changingVariableIndex].variableValue = evt.newValue;
        });
        var blackboardValueRow = new BlackboardRow(blackboardField, variableValueTextField);

        container.Add(blackboardValueRow);


        blackboard.Add(container);
    }
コード例 #11
0
    public void AddPropertyToBlackBoard(ExposedProperty exposedProperty)
    {
        int    duplicateNameIndex = 1;
        string localPropertyName  = exposedProperty.PropertyName;
        string localPropertyValue = exposedProperty.PropertyValue;

        while (ExposedProperties.Any(x => x.PropertyName == localPropertyName))
        {
            localPropertyName = $"{localPropertyName}{duplicateNameIndex}"; // Name || Name1 || Name12
            duplicateNameIndex++;
        }

        ExposedProperty property = new ExposedProperty();

        property.PropertyName  = localPropertyName;
        property.PropertyValue = localPropertyValue;
        ExposedProperties.Add(property);

        VisualElement   container = new VisualElement();
        BlackboardField field     = new BlackboardField
        {
            text     = property.PropertyName,
            typeText = "string",
        };

        container.Add(field);

        TextField propertyValueTextField = new TextField("Value : ")
        {
            value = localPropertyValue,
            style = { width = new Length(80, LengthUnit.Percent) }
        };


        propertyValueTextField.RegisterValueChangedCallback(delegate(ChangeEvent <string> evt)
        {
            int changingPropertyIndex = ExposedProperties.FindIndex(x => x.PropertyName == property.PropertyName);
            ExposedProperties[changingPropertyIndex].PropertyValue = evt.newValue;
        });

        BlackboardRow blackboardRow = new BlackboardRow(field, propertyValueTextField);

        container.Add(blackboardRow);


        if (Blackboard != null)
        {
            Blackboard.Add(container);
        }
    }
        public IEnumerator BlackboardSelectionIsRestoredWhenEnteringPlaymode_AddFieldsBeforeAddingBBToGV()
        {
            { // Create initial blackboard.
                var blackboard = new Blackboard();

                var inSection = new BlackboardSection();
                blackboard.Add(inSection);

                var field = new BlackboardField()
                {
                    viewDataKey = "bfield"
                };
                var propertyView = new Label("Prop");
                var row          = new BlackboardRow(field, propertyView);
                inSection.Add(row);

                graphView.AddElement(blackboard);

                graphView.AddToSelection(field);
                Assert.True(field.selected);
            }

            // Allow 1 frame to let the persistent data get saved
            yield return(null);

            // This will re-create the window, flushing all temporary state
            yield return(new EnterPlayMode());

            // Allow 1 frame to let the persistence be restored
            yield return(null);

            { // Add field to blackboard first then add blackboard to graphview.
                var blackboard = new Blackboard();

                var inSection = new BlackboardSection();
                blackboard.Add(inSection);

                var field = new BlackboardField()
                {
                    viewDataKey = "bfield"
                };
                var propertyView = new Label("Prop");
                var row          = new BlackboardRow(field, propertyView);
                inSection.Add(row);

                graphView.AddElement(blackboard);

                Assert.True(field.selected);
            }
        }
コード例 #13
0
    public CharacterProperty(string propertyName, string propertyValue, DialogueGraphView dialogueGraphView)
    {
        graphView     = dialogueGraphView;
        propertyType  = BlackboardType.Character;
        PropertyName  = propertyName;
        PropertyValue = propertyValue;

        propertyElement = new VisualElement();
        var blackboardField = new BlackboardField {
            text = propertyName, typeText = "Character"
        };

        blackboardField.Q <Label>("typeLabel").style.flexBasis = StyleKeyword.Auto;
        blackboardField.capabilities &= ~Capabilities.Deletable;

        blackboardField.RegisterCallback <ContextualMenuPopulateEvent>(PopulateDeleteOption);
        blackboardField.Add(new Button(() => { graphView.RemovePropertyFromBlackboard(this.PropertyName); })
        {
            text = "X"
        });

        propertyElement.Add(blackboardField);

        var propertyValueTextField = new TextField("Value:")
        {
            value = PropertyValue
        };

        propertyValueTextField.Q <Label>().style.minWidth = StyleKeyword.Auto;

        propertyValueTextField.RegisterValueChangedCallback(evt =>
        {
            var changingPropertyIndex = graphView.exposedProperties.FindIndex(x => x.PropertyName == this.PropertyName);

            if (changingPropertyIndex < 0)
            {
                return;
            }

            graphView.exposedProperties[changingPropertyIndex].PropertyValue = evt.newValue;
            propertyValueTextField.value = evt.newValue;
        });

        var blackboardValueRow = new BlackboardRow(blackboardField, propertyValueTextField);

        propertyElement.Add(blackboardValueRow);
    }
コード例 #14
0
        public void AddPropertyToBlackBoard(ExposedProperty property, bool loadMode = false)
        {
            var localPropertyName  = property.PropertyName;
            var localPropertyValue = property.PropertyValue;
            // var localPropertySprite = property.PropertySprite;
            var localPropertyNameCharacter = property.PropertyNameCharacter;

            if (!loadMode)
            {
                while (ExposedProperties.Any(x => x.PropertyName == localPropertyName))
                {
                    localPropertyName = $"{localPropertyName}(1)";
                }
            }

            var item = ExposedProperty.CreateInstance();

            item.PropertyName          = localPropertyName;
            item.PropertyValue         = localPropertyValue;
            item.PropertyNameCharacter = localPropertyNameCharacter;
            // item.PropertySprite = localPropertySprite;
            ExposedProperties.Add(item);

            var container = new VisualElement();
            //Serch Elements in BlackBoard
            var field = new BlackboardField {
                text = localPropertyName, typeText = "string"
            };

            container.Add(field);

            var propertyValueTextField = new TextField("Value:")
            {
                value = localPropertyValue
            };

            propertyValueTextField.RegisterValueChangedCallback(evt =>
            {
                var index = ExposedProperties.FindIndex(x => x.PropertyName == item.PropertyName);
                ExposedProperties[index].PropertyValue = evt.newValue;
            });
            var sa = new BlackboardRow(field, propertyValueTextField);

            container.Add(sa);
            Blackboard.Add(container);
        }
コード例 #15
0
    internal void AddPropertyToBlackBoard(ExposedProperty exposedProperty)
    {
        //local var for the blackboard prop
        var localPropertyName  = exposedProperty.PropertyName;
        var localPropertyValue = exposedProperty.PropertyValue;

        //loop through and find the any duplicts and another +1 to name
        while (ExposedProperties.Any(x => x.PropertyName == localPropertyName))
        {
            localPropertyName = $"{localPropertyName}(1)"; //
        }
        var property = new ExposedProperty();

        property.PropertyName  = localPropertyName;
        property.PropertyValue = localPropertyValue;
        ExposedProperties.Add(property);

        var container       = new VisualElement();
        var blackboardField = new BlackboardField
        {
            text     = property.PropertyName,
            typeText = "string property"
        };

        container.Add(blackboardField);
        //add value fiels into black board
        var propertyValueTextField = new TextField("value")
        {
            value = localPropertyValue
        };

        propertyValueTextField.RegisterValueChangedCallback(evt =>
        {
            var changingPropertyIndex = ExposedProperties.FindIndex(x => x.PropertyName == property.PropertyName);
            ExposedProperties[changingPropertyIndex].PropertyValue = evt.newValue;
        });

        var blackBoardValueRow = new BlackboardRow(blackboardField, propertyValueTextField);

        container.Add(blackBoardValueRow);
        Blackboard.Add(container);
    }
コード例 #16
0
 private void InitVariables(BehaviourGraphModel model)
 {
     inspector.VariableContainer.Clear();
     if (model.Settings.variableDefinition.Value != null)
     {
         foreach (var variable in model.Settings.variableDefinition.Value.Decompose())
         {
             var blackboardField = new BlackboardField(ICON, $"{model.Settings.variableDefinition.Value.Name}.{variable.fullName}", $"{variable.type.Value.FullName}")
             {
                 capabilities = Capabilities.Selectable | Capabilities.Deletable | Capabilities.Droppable
             };
             blackboardField.userData = new VariableInfo {
                 fieldOffsetInfo = variable, model = model
             };
             blackboardField.AddToClassList(BEHAVIOUR_VARIABLE_CLASS);
             blackboardField.Q <Image>("icon").tintColor = variable.type.Value.GetColor();
             inspector.VariableContainer.Add(blackboardField);
         }
     }
 }
コード例 #17
0
        public void AddFieldView(string _name, ICZType _data)
        {
            BlackboardField blackboardField = new BlackboardField()
            {
                text = _name, typeText = _data.ValueType.Name, userData = _data
            };

            blackboardField.RegisterCallback <MouseEnterEvent>(evt =>
            {
                GraphView.nodes.ForEach(node =>
                {
                    if (node is ParameterNodeView parameterNodeView && parameterNodeView.T_Model.Name == blackboardField.text)
                    {
                        parameterNodeView.HighlightOn();
                    }
                });
            });

            blackboardField.RegisterCallback <MouseLeaveEvent>(evt =>
            {
                GraphView.nodes.ForEach(node =>
                {
                    if (node is ParameterNodeView parameterNodeView && parameterNodeView.T_Model.Name == blackboardField.text)
                    {
                        parameterNodeView.HighlightOff();
                    }
                });
            });
            BindableElement fieldDrawer = UIElementsFactory.CreateField("", _data.ValueType, _data.GetValue(), _newValue =>
            {
                _data.SetValue(_newValue);
                if (_data.GetValue() != null)
                {
                    blackboardField.typeText = _data.ValueType.Name;
                }
            });
            BlackboardRow blackboardRow = new BlackboardRow(blackboardField, fieldDrawer);

            contentContainer.Add(blackboardRow);
            fields[_name] = blackboardRow;
        }
コード例 #18
0
        void AddProperty(INodeProperty property, bool create = false, int index = -1)
        {
            if (m_PropertyRows.ContainsKey(property.guid))
            {
                return;
            }

            if (create)
            {
                property.displayName = m_Graph.SanitizePropertyName(property.displayName);
            }

            var field = new BlackboardField(m_ExposedIcon, property.displayName, property.propertyType.ToString())
            {
                userData = property
            };
            var row = new BlackboardRow(field, new BlackboardFieldPropertyView(m_Graph, property));

            row.userData = property;
            if (index < 0)
            {
                index = m_PropertyRows.Count;
            }
            if (index == m_PropertyRows.Count)
            {
                m_Section.Add(row);
            }
            else
            {
                m_Section.Insert(index, row);
            }
            m_PropertyRows[property.guid] = row;

            if (create)
            {
                row.expanded = true;
                m_Graph.owner.RegisterCompleteObjectUndo("Create Property");
                m_Graph.AddShaderProperty(property);
                field.OpenTextEditor();
            }
        }
コード例 #19
0
        public void AddPropertyToBlackboard(ExposedProperty exposedProperty)
        {
            List <string> existingNamesList  = (from p in ExposedProperties select p.PropertyName).ToList();
            var           localPropertyName  = StringUtils.IncrementName(exposedProperty.PropertyName, existingNamesList);
            var           localPropertyValue = exposedProperty.PropertyValue;

            var property = new ExposedProperty
            {
                PropertyName  = localPropertyName,
                PropertyValue = localPropertyValue
            };

            ExposedProperties.Add(property);

            var container       = new VisualElement();
            var blackboardField = new BlackboardField {
                text = property.PropertyName, typeText = "string"
            };

            container.Add(blackboardField);

            var propertyValueTextField = new TextField("Value:")
            {
                value = property.PropertyValue
            };

            propertyValueTextField.RegisterValueChangedCallback(evt =>
            {
                var changingPropertyIndex = ExposedProperties.FindIndex(x => x.PropertyName == property.PropertyName);
                ExposedProperties[changingPropertyIndex].PropertyValue = evt.newValue;
            });

            var blackboardValueRow = new BlackboardRow(blackboardField, propertyValueTextField);

            container.Add(blackboardValueRow);

            Blackboard.Add(container);
        }
コード例 #20
0
ファイル: ComponentEditor.cs プロジェクト: substence/UnityVS3
        VisualElement MakeFieldRow(FieldModel fieldModel)
        {
            var field = new BlackboardField(null, fieldModel.Name, fieldModel.Type?.FriendlyName() ?? "<unknown>");

            field.userData = fieldModel;
            var propertyView = new VisualElement();

            var fieldRow = new BlackboardRow(field, propertyView)
            {
                userData = fieldModel
            };

            fieldRow.expanded = m_ExpandedRows.Contains(fieldModel);

            field.Add(new Button(() => DeleteField(fieldRow, fieldModel))
            {
                name = "deleteComponentIcon"
            });

            var fieldType = new Button()
            {
                text = fieldModel.Type?.FriendlyName() ?? "<unknown>"
            };

            fieldType.clickable.clicked += () =>
            {
                InitializeTypeItemsAndCache(); // delay init as the type cache seems to have a weird timing issue otherwise
                SearcherWindow.Show(this, new Searcher.Searcher(new SearcherDatabase(TypeItems), new TypeSearcherAdapter("Pick a type")), item =>
                {
                    PickTypeSearcherItem titem = item as PickTypeSearcherItem;

                    if (titem == null)
                    {
                        return(true);
                    }
                    fieldModel.Type = titem.Type;
                    fieldType.text  = titem.Type.FriendlyName();

                    if (titem.Shared)
                    {
                        SetStructType(CurrentStruct, StructType.SharedComponent);
                    }

                    SetModelDirty();

                    return(true);
                }, Event.current.mousePosition, null);
            };
            propertyView.Add(new PropertyRow("Type", fieldType));

            var toggle = new Toggle()
            {
                value = fieldModel.HideInInspector
            };

            toggle.RegisterValueChangedCallback(e =>
            {
                fieldModel.HideInInspector = e.newValue;
                SetModelDirty();
            });
            propertyView.Add(new PropertyRow("Hide in inspector", toggle));

            // TODO ugly
            if (!fieldModel.Type.IsValueType && fieldModel.Type != typeof(GameObject))
            {
                propertyView.Add(new Label("This is a reference type and requires the component to be a shared component"));
            }
            return(fieldRow);
        }
コード例 #21
0
        void Rename(Blackboard _blackboard, VisualElement _field, string _newName)
        {
            BlackboardField blackboardField = _field as BlackboardField;

            GraphView.Model.RenameData_BB(blackboardField.text, _newName);
        }