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(); }
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(); }