コード例 #1
0
        static VisualElement CreateSourceStatePropertyGUI(SerializedProperty property,
                                                          List <GimmickTarget> targetChoices,
                                                          Func <GimmickTarget, string> formatTarget)
        {
            Assert.AreEqual(property.type, nameof(SourceState));
            var container = new VisualElement
            {
                style =
                {
                    flexDirection = new StyleEnum <FlexDirection>(FlexDirection.Row),
                    flexGrow      = new StyleFloat(9)
                }
            };

            var targetProperty  = property.FindPropertyRelative("target");
            var currentTarget   = (GimmickTarget)targetProperty.intValue;
            var selectingTarget = targetChoices.Contains(currentTarget) ? currentTarget : targetChoices[0];
            var targetField     = EnumField.Create(targetProperty, targetChoices, selectingTarget, formatTarget);

            container.Add(targetField);

            var keyProperty = property.FindPropertyRelative("key");

            Assert.AreEqual(keyProperty.propertyType, SerializedPropertyType.String);
            var keyField = new TextField
            {
                bindingPath = keyProperty.propertyPath,
                style       = { flexGrow = new StyleFloat(9) }
            };

            keyField.Bind(keyProperty.serializedObject);
            container.Add(keyField);

            return(container);
        }
コード例 #2
0
        public void SetNode(ANode node, SerializedProperty serializedNode)
        {
            UnselectNode();
            if (node == null || serializedNode == null)
            {
                return;
            }

            m_selectedNode         = node;
            m_selectedNodeProperty = serializedNode;

            m_nodeNameLabel.text           = AddSpacesToSentence(node.GetType().Name);
            m_nodeIdLabel.text             = node.Id;
            m_nodeCommentField.bindingPath = serializedNode.FindPropertyRelative("m_comment").propertyPath;
            m_nodeCommentField.Bind(serializedNode.serializedObject);

            m_commentPlaceholder.style.display = (string.IsNullOrEmpty(serializedNode.FindPropertyRelative("m_comment").stringValue))
                ? DisplayStyle.Flex
                : DisplayStyle.None;

            if (node.UseIMGUIPropertyDrawer)
            {
                m_imguiContainer.style.display = DisplayStyle.Flex;
            }
            else
            {
                if (m_propertyField != null)
                {
                    m_inspectorArea.Remove(m_propertyField);
                }
                m_propertyField = new PropertyField(m_selectedNodeProperty);
                m_propertyField.Bind(m_selectedNodeProperty.serializedObject);
                m_propertyField.style.display = DisplayStyle.Flex;

                // This requires Unity 2020.2 to work correctly https://forum.unity.com/threads/uielements-developer-guide.648043/#post-6073137
                m_propertyField.RegisterCallback <SerializedPropertyChangeEvent>(x =>
                {
                    m_nodeGraphView.GetNodeViewById(node.Id)?.HandleOnSerializedPropertyChanged();
                });

                m_inspectorArea.Add(m_propertyField);
            }
        }
コード例 #3
0
        //Commenting this out.
        //I have no plans to continue to support this for now

        /*[MenuItem("Gameframe/Packages/Publisher")]
         * public static void Open()
         * {
         *  PackageNpmPublisher wnd = GetWindow<PackageNpmPublisher>();
         *  wnd.titleContent = new GUIContent("Package Publisher");
         * }*/

        public void OnEnable()
        {
            // Each editor window contains a root VisualElement object
            VisualElement root = rootVisualElement;

            // A stylesheet can be added to a VisualElement.
            // The style will be applied to the VisualElement and all of its children.
            var styleSheetPath = ResourcePath + StyleSheetFilename;
            var styleSheet     = AssetDatabase.LoadAssetAtPath <StyleSheet>(styleSheetPath);

            if (styleSheet != null)
            {
                root.styleSheets.Add(styleSheet);
            }
            else
            {
                Debug.LogError($"Failed to Load Style Sheet. Check uss file exists or syntax error.");
            }

            // Import UXML
            //var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Packages/com.gameframe.packages/Editor/PackagePublisherWindow/PackagePublisher.uxml");
            //VisualElement labelFromUXML = visualTree.CloneTree();
            //root.Add(labelFromUXML);
            SerializedObject so = new SerializedObject(this);

            var fieldContainer = new VisualElement()
            {
                name = "FieldContainer"
            };

            fieldContainer.AddToClassList("BorderedContainer");
            root.Add(fieldContainer);

            var serverField = new TextField
            {
                label       = "Server",
                bindingPath = nameof(address)
            };

            serverField.Bind(so);
            fieldContainer.Add(serverField);

            var emailField = new TextField
            {
                label       = "email",
                bindingPath = nameof(email)
            };

            emailField.Bind(so);
            fieldContainer.Add(emailField);

            var usernameField = new TextField
            {
                label       = "Username",
                bindingPath = nameof(username),
            };

            usernameField.Bind(so);
            fieldContainer.Add(usernameField);

            var passwordField = new TextField()
            {
                label           = "Password",
                bindingPath     = nameof(password),
                isPasswordField = true
            };

            passwordField.Bind(so);
            fieldContainer.Add(passwordField);

            packageScrollList = new ScrollView();
            packageScrollList.AddToClassList("BorderedContainer");
            root.Add(packageScrollList);

            var buttonContainer = new VisualElement()
            {
                name  = "ButtonContainer",
                style =
                {
                    flexDirection  = FlexDirection.Row,
                    justifyContent = Justify.Center,
                }
            };

            root.Add(buttonContainer);

            loginStatusLabel = new Label("Waiting...")
            {
                style =
                {
                    unityTextAlign = TextAnchor.MiddleRight
                }
            };
            fieldContainer.Add(loginStatusLabel);

            var loginButton = new Button(Login)
            {
                name  = "ButtonLogin",
                text  = "Login",
                style =
                {
                    marginTop   = 5,
                    marginLeft  = 5,
                    marginRight = 5,
                    paddingTop  = 4
                }
            };

            fieldContainer.Add(loginButton);

            var publishButton = new Button(Publish)
            {
                name  = "ButtonPublish",
                text  = "Publish",
                style =
                {
                    marginLeft  = 5,
                    marginRight = 5
                }
            };

            buttonContainer.Add(publishButton);

            var refreshButton = new Button(Refresh)
            {
                name  = "ButtonRefresh",
                text  = "Refresh",
                style =
                {
                    marginLeft  = 5,
                    marginRight = 5
                }
            };

            buttonContainer.Add(refreshButton);

            /*var installButton = new Button(InstallCli)
             * {
             *  name = "ButtonInstall",
             *  style =
             *  {
             *      marginLeft = 5,
             *      marginRight = 5
             *  }
             * };
             * installButton.Add(new Label("Install"));
             * buttonContainer.Add(installButton);*/

            selectedPackageList = new List <PackageManifest>();
            PopulateScrollViewWithPackages(packageScrollList);

            CheckLogin();
            CheckInstall();
        }