コード例 #1
0
        public RandomizerElement(SerializedProperty property, RandomizerList randomizerList)
        {
            m_Property          = property;
            this.randomizerList = randomizerList;

            m_Collapsed = property.FindPropertyRelative("collapsed");
            collapsed   = m_Collapsed.boolValue;

            AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(
                $"{StaticData.uxmlDir}/Randomizer/RandomizerElement.uxml").CloneTree(this);

            var classNameLabel = this.Q <TextElement>("class-name");
            var splitType      = property.managedReferenceFullTypename.Split(' ', '.');

            classNameLabel.text = splitType[splitType.Length - 1];

            m_PropertiesContainer = this.Q <VisualElement>("properties");

            var collapseToggle = this.Q <VisualElement>("collapse");

            collapseToggle.RegisterCallback <MouseUpEvent>(evt => collapsed = !collapsed);

            var enabledToggle = this.Q <Toggle>("enabled");

            enabledToggle.BindProperty(property.FindPropertyRelative("m_Enabled"));

            var removeButton = this.Q <Button>("remove");

            removeButton.clicked += () => randomizerList.RemoveRandomizer(this);

            this.AddManipulator(new DragToReorderManipulator());

            FillPropertiesContainer();
        }
コード例 #2
0
        public AddRandomizerMenu(VisualElement parentElement, VisualElement button, RandomizerList randomizerList)
        {
            m_RandomizerList = randomizerList;
            var template = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(
                $"{StaticData.uxmlDir}/Randomizer/AddRandomizerMenu.uxml");

            template.CloneTree(this);
            style.position = new StyleEnum <Position>(Position.Absolute);

            var buttonPosition = button.worldBound.position;
            var top            = math.min(buttonPosition.y, parentElement.worldBound.height - 300);

            style.top  = top;
            style.left = buttonPosition.x;

            focusable = true;
            RegisterCallback <FocusOutEvent>(evt =>
            {
                if (evt.relatedTarget == null || ((VisualElement)evt.relatedTarget).FindCommonAncestor(this) != this)
                {
                    ExitMenu();
                }
            });

            var directoryLabel = this.Q <VisualElement>("directory-label");

            directoryLabel.RegisterCallback <MouseUpEvent>(evt => { AscendDirectory(); });
            m_DirectoryLabelText = this.Q <TextElement>("directory-label-text");
            m_DirectoryChevron   = this.Q <VisualElement>("directory-chevron");

            var searchBar = this.Q <TextField>("search-bar");

            searchBar.schedule.Execute(() => searchBar.ElementAt(0).Focus());
            searchBar.RegisterValueChangedCallback(evt => searchString = evt.newValue);

            m_MenuElements = this.Q <VisualElement>("menu-options");

            CreateMenuItems();
            DrawDirectoryItems();
        }