Esempio n. 1
0
        private void refreshTree()
        {
            var treeView = _treeView;

            if (treeView == null)
            {
                return;
            }
            var root = new AGSTreeStringNode {
                Text = ""
            };
            List <ITreeStringNode> toExpand = new List <ITreeStringNode>();

            foreach (var pair in _props.OrderBy(p => p.Key.Z).ThenBy(p => p.Key.Name))
            {
                ITreeStringNode cat = addToTree(pair.Key.Name, root);
                foreach (var prop in pair.Value.OrderBy(p => p.Name))
                {
                    addToTree(cat, prop);
                }
                if (pair.Key.Expand)
                {
                    toExpand.Add(cat);
                }
            }
            treeView.Tree = root;
            treeView.Expand(root);
            foreach (var node in toExpand)
            {
                treeView.Expand(node);
            }
        }
Esempio n. 2
0
        public ITreeNodeView CreateNode(ITreeStringNode item, IRenderLayer layer)
        {
            var buttonWidth  = 20f;
            var buttonHeight = 60f;
            var idle         = new ButtonAnimation(new EmptyImage(buttonWidth, buttonHeight));

            idle.Tint = Colors.Black;
            var hovered = new ButtonAnimation(new EmptyImage(buttonWidth, buttonHeight));

            hovered.Tint = Colors.Yellow;
            var pushed = new ButtonAnimation(new EmptyImage(buttonWidth, buttonHeight));

            pushed.Tint = Colors.DarkSlateBlue;
            int nodeId          = Interlocked.Increment(ref _nextNodeId);
            var itemTextId      = (item.Text ?? "") + "_" + nodeId;
            var parentPanel     = _factory.UI.GetPanel("TreeNodeParentPanel_" + itemTextId, 0f, 0f, 0f, 0f, addToUi: false);
            var horizontalPanel = _factory.UI.GetPanel("TreeNodeHorizontalPanel_" + itemTextId, 0f, 0f, 0f, 0f, parentPanel, false);
            var expandButton    = _factory.UI.GetButton("ExpandButton_" + itemTextId, idle, hovered, pushed, 0f, 0f, horizontalPanel, addToUi: false);
            var label           = _factory.UI.GetLabel("TreeNodeLabel_" + itemTextId, item.Text, 0f, 0f, buttonWidth, 0f, horizontalPanel,
                                                       new AGSTextConfig(paddingTop: 0f, paddingBottom: 0f, autoFit: AutoFit.LabelShouldFitText), addToUi: false);
            var verticalPanel = _factory.UI.GetPanel("TreeNodeVerticalPanel_" + itemTextId, 0f, 0f, 0f, 0f, parentPanel, false);

            horizontalPanel.RenderLayer = layer;
            verticalPanel.RenderLayer   = layer;
            parentPanel.RenderLayer     = layer;
            expandButton.RenderLayer    = layer;
            label.RenderLayer           = layer;
            expandButton.Z       = label.Z - 1;
            horizontalPanel.Tint = Colors.Transparent;
            parentPanel.Tint     = Colors.Transparent;
            verticalPanel.Tint   = Colors.Transparent;
            expandButton.Tint    = Colors.Transparent;
            expandButton.TextBackgroundVisible = false;
            label.Tint = Colors.Transparent;
            label.TextBackgroundVisible = false;
            label.Enabled = true;
            expandButton.IsPixelPerfect = false;
            horizontalPanel.AddComponent <IBoundingBoxWithChildrenComponent>();
            var layout = horizontalPanel.AddComponent <IStackLayoutComponent>();

            layout.RelativeSpacing = 1f;
            layout.Direction       = LayoutDirection.Horizontal;
            layout.StartLayout();

            PropertyChangedEventHandler onPropertyChanged = (sender, e) =>
            {
                if (e.PropertyName != nameof(ITreeStringNode.Text))
                {
                    return;
                }
                label.Text = item.Text;
            };

            item.PropertyChanged += onPropertyChanged;
            label.OnDisposed(() => item.PropertyChanged -= onPropertyChanged);

            var nodeView = new AGSTreeNodeView(label, expandButton, parentPanel, verticalPanel, horizontalPanel);

            return(nodeView);
        }
Esempio n. 3
0
        public void BeforeDisplayingNode(ITreeStringNode item, ITreeNodeView nodeView,
                                         bool isCollapsed, bool isHovered, bool isSelected)
        {
            var textConfig = isHovered ? item.HoverTextConfig : item.IdleTextConfig;
            var label      = nodeView.TreeItem as ITextComponent;

            if (label != null)
            {
                label.TextConfig            = textConfig;
                label.Text                  = item.Text;
                label.TextBackgroundVisible = isSelected;
                item.PropertyChanged       += (sender, e) =>
                {
                    if (e.PropertyName != nameof(ITreeStringNode.Text))
                    {
                        return;
                    }
                    label.Text = item.Text;
                };
            }
            nodeView.TreeItem.Tint = isSelected ? Colors.DarkSlateBlue : Colors.Transparent;
            var expandButton = nodeView.ExpandButton;

            if (expandButton != null)
            {
                expandButton.TextConfig  = textConfig;
                expandButton.Text        = isCollapsed ? "+" : "-";
                expandButton.TextVisible = item.TreeNode.ChildrenCount > 0;
                expandButton.Enabled     = expandButton.TextVisible;
            }
        }
        public ITreeNodeView CreateNode(ITreeStringNode item, IRenderLayer layer)
        {
            var view = _provider.CreateNode(item, layer);
            var node = item as IInspectorTreeNode;

            if (node == null)
            {
                return(view);
            }

            var layout = view.HorizontalPanel.GetComponent <IStackLayoutComponent>();

            layout.AbsoluteSpacing = 10f;
            int nodeId     = Interlocked.Increment(ref _nextNodeId);
            var itemTextId = (item.Text ?? "") + "_" + nodeId;

            node.Editor.AddEditorUI("InspectorEditor_" + itemTextId, view, node.Property);

            var propertyChanged = node.Property.Object as INotifyPropertyChanged;

            if (propertyChanged != null)
            {
                propertyChanged.PropertyChanged += (sender, e) =>
                {
                    if (e.PropertyName != node.Property.Name)
                    {
                        return;
                    }
                    node.Property.Refresh();
                    node.Editor.RefreshUI();
                };
            }

            return(view);
        }
Esempio n. 5
0
        private void onTreeNodeSelected(NodeEventArgs args)
        {
            if (args.Node == _lastSelectedNode)
            {
                return;
            }
            Unselect();
            _lastSelectedNode = args.Node;
            if (args.Node.Text == _settingsPrefix)
            {
                _inspector.Show(_editor.Game.Settings);
                return;
            }
            string nodeType = args.Node.Properties.Strings.GetValue(Fields.Type);

            if (nodeType == null)
            {
                return;
            }
            switch (nodeType)
            {
            case NodeType.Object:
                selectObject(args.Node);
                break;

            case NodeType.Area:
                selectArea(args.Node);
                break;
            }
        }
Esempio n. 6
0
        private void removeFromTree(string id, ITreeStringNode parent)
        {
            _addedObjects.Remove(id);
            var node = parent.TreeNode.Children.FirstOrDefault(c => c.Text == id);

            node?.TreeNode.SetParent(null);
        }
Esempio n. 7
0
        private void refresh()
        {
            _addedObjects.Clear();
            var root = addToTree("Game", null);

            addToTree(_settingsPrefix, root);
            var ui = addToTree(_uiPrefix, root);

            var state = _editor.Game.State;

            foreach (var obj in state.UI)
            {
                addObjectToTree(getRoot(obj), ui);
            }
            addRoomToTree(state.Room, root);

            _moreRoomsNode = addToTree(_moreRoomsPrefix, root);
            foreach (var room in state.Rooms)
            {
                if (room == state.Room)
                {
                    continue;
                }
                addRoomToTree(room, _moreRoomsNode);
            }

            _treeView.Tree = root;
        }
Esempio n. 8
0
        private void onTreeNodeSelected(NodeEventArgs args)
        {
            if (args.Node == _lastSelectedNode)
            {
                return;
            }
            Unselect();
            _lastSelectedNode = args.Node;
            string nodeType = args.Node.Properties.Strings.GetValue(Fields.Type);

            if (nodeType == null)
            {
                return;
            }
            switch (nodeType)
            {
            case NodeType.Object:
                selectObject(args.Node);
                break;

            case NodeType.Area:
                selectArea(args.Node);
                break;
            }
        }
Esempio n. 9
0
 private void addChildrenToTree(ITreeStringNode node, IProperty prop)
 {
     foreach (var child in prop.Children)
     {
         addToTree(node, child);
     }
 }
Esempio n. 10
0
        public void BeforeDisplayingNode(ITreeStringNode item, ITreeNodeView nodeView,
                                         bool isCollapsed, bool isHovered, bool isSelected)
        {
            var textConfig = isHovered ? item.HoverTextConfig : item.IdleTextConfig;
            var label      = nodeView.TreeItem as ITextComponent;

            if (label != null)
            {
                label.TextConfig            = textConfig;
                label.Text                  = item.Text;
                label.TextBackgroundVisible = isSelected;
            }
            nodeView.TreeItem.Tint = isSelected ? Colors.DarkSlateBlue : Colors.Transparent;
            var expandButton = nodeView.ExpandButton;

            if (expandButton != null)
            {
                var expandTextConfig = textConfig;
                if (item.TreeNode.ChildrenCount == 0)
                {
                    expandTextConfig = AGSTextConfig.ChangeColor(textConfig, textConfig.Brush.Color.WithAlpha(0), textConfig.OutlineBrush.Color, textConfig.OutlineWidth);
                }
                expandButton.TextConfig = expandTextConfig;
                expandButton.Text       = isCollapsed ? "+" : "-";
                expandButton.Enabled    = expandButton.TextVisible;
            }
        }
Esempio n. 11
0
        private ITreeStringNode addReadonlyNodeToTree(IProperty property, ITreeStringNode parent)
        {
            IInspectorPropertyEditor editor = new StringPropertyEditor(_factory, false, _actions, _model);
            ITreeStringNode          node   = new InspectorTreeNode(property, editor, _font);

            addToTree(node, parent);
            if (property.Object is INotifyPropertyChanged propertyChanged)
            {
                PropertyChangedEventHandler onPropertyChanged = (sender, e) =>
                {
                    if (e.PropertyName != property.Name)
                    {
                        return;
                    }
                    bool isExpanded = _treeView.IsCollapsed(node) == false;
                    if (isExpanded)
                    {
                        _treeView.Collapse(node);
                    }
                    ObjectTypeDescriptor.RefreshChildrenProperties(property);
                    node.TreeNode.Children.Clear();
                    addChildrenToTree(node, property);

                    //todo: we'd like to enable expanding a node that was previously expanded however there's a bug that needs to be investigated before that, to reproduce:
                    //In the demo game, show the inspector for the character and expand its current room. Then move to another room.
                    //For some reason this results in endless boundin box/matrix changes until stack overflow is reached.
                    //if (isExpanded)
                    //  _treeView.Expand(node);
                };
                propertyChanged.PropertyChanged += onPropertyChanged;
                _cleanup.Add(() => propertyChanged.PropertyChanged -= onPropertyChanged);
            }
            return(node);
        }
Esempio n. 12
0
        private void refreshTree()
        {
            var treeView = _treeView;

            if (treeView == null)
            {
                return;
            }
            var root = new AGSTreeStringNode("", _font);
            List <ITreeStringNode> toExpand = new List <ITreeStringNode>();
            bool skipCategories             = _props.Count == 1;

            foreach (var pair in _props.OrderBy(p => p.Key.Z).ThenBy(p => p.Key.Name))
            {
                ITreeStringNode         cat    = skipCategories ? root : addToTree(pair.Key.Name, root);
                IEnumerable <IProperty> values = SortValues ? pair.Value.OrderBy(p => p.Name) : (IEnumerable <IProperty>)pair.Value;
                foreach (var prop in values)
                {
                    addToTree(cat, prop);
                }
                if (pair.Key.Expand)
                {
                    toExpand.Add(cat);
                }
            }
            treeView.Tree = root;
            treeView.Expand(root);
            foreach (var node in toExpand)
            {
                treeView.Expand(node);
            }
        }
Esempio n. 13
0
        private ITreeStringNode addReadonlyNodeToTree(InspectorProperty property, ITreeStringNode parent)
        {
            var node            = addToTree(getReadonlyNodeText(property), parent);
            var propertyChanged = property.Object as INotifyPropertyChanged;

            if (propertyChanged != null)
            {
                propertyChanged.PropertyChanged += (sender, e) =>
                {
                    if (e.PropertyName != property.Name)
                    {
                        return;
                    }
                    bool isExpanded = _treeView.IsCollapsed(node) == false;
                    if (isExpanded)
                    {
                        _treeView.Collapse(node);
                    }
                    property.Refresh();
                    node.Text = getReadonlyNodeText(property);
                    refreshChildrenProperties(property);
                    node.TreeNode.Children.Clear();
                    addChildrenToTree(node, property);

                    //todo: we'd like to enable expanding a node that was previously expanded however there's a bug that needs to be investigated before that, to reproduce:
                    //In the demo game, show the inspector for the character and expand its current room. Then move to another room.
                    //For some reason this results in endless boundin box/matrix changes until stack overflow is reached.
                    //if (isExpanded)
                    //  _treeView.Expand(node);
                };
            }
            return(node);
        }
Esempio n. 14
0
        public void Unselect()
        {
            if (_lastSelectedNode == null)
            {
                return;
            }
            _lastSelectedNode = null;
            _lastSelectedEntity?.GetComponent <EntityDesigner>()?.Dispose();
            _lastSelectedEntity?.RemoveComponent <EntityDesigner>();
            var lastSelectedMaskVisible = _lastSelectedMaskVisible;
            var lastSelectedMaskImage   = _lastSelectedMaskImage;
            var lastEnabled             = _lastEnabled;

            if (lastSelectedMaskVisible != null)
            {
                lastSelectedMaskVisible.Visible = _lastMaskVisible;
            }
            if (lastSelectedMaskImage != null)
            {
                lastSelectedMaskImage.Opacity = _lastOpacity;
            }
            if (_lastSelectedEnabled != null)
            {
                _lastSelectedEnabled.Enabled      = lastEnabled;
                _lastSelectedEnabled.ClickThrough = _lastClickThrough;
            }
            _lastSelectedEnabled = null;
            _lastMaskVisible     = false;
            _lastOpacity         = 0;
        }
Esempio n. 15
0
        private ITreeStringNode addToTree(string text, ITreeStringNode parent)
        {
            ITreeStringNode node = (ITreeStringNode) new AGSTreeStringNode {
                Text = text
            };

            return(addToTree(node, parent));
        }
Esempio n. 16
0
        private void addAreaToTree(IArea area, ITreeStringNode parent)
        {
            var node = addToTree(area.ID, parent);

            node.Properties.Strings.SetValue(Fields.Type, NodeType.Area);
            node.Properties.Entities.SetValue(Fields.Entity, area);
            _entitiesToNodes[area.ID] = node;
        }
Esempio n. 17
0
 private ITreeStringNode addToTree(ITreeStringNode node, ITreeStringNode parent)
 {
     if (parent != null)
     {
         node.TreeNode.SetParent(parent.TreeNode);
     }
     return(node);
 }
Esempio n. 18
0
        public void BeforeDisplayingNode(ITreeStringNode item, ITreeNodeView nodeView, bool isCollapsed, bool isHovered, bool isSelected)
        {
            isHovered |= item.Properties.Bools.GetValue(FOLDER_HOVERED);
            _inner.BeforeDisplayingNode(item, nodeView, isCollapsed, isHovered, isSelected);
            var folderIcon = (ILabel)nodeView.ExpandButton.TreeNode.Children.First(c => c.ID.StartsWith("FolderIcon", StringComparison.InvariantCulture));

            folderIcon.Text             = isSelected ? FontIcons.FolderOpen : FontIcons.Folder;
            folderIcon.TextConfig.Brush = isHovered ? GameViewColors.HoveredTextBrush : GameViewColors.TextBrush;
        }
Esempio n. 19
0
        private ITreeStringNode addToTree(string text, ITreeStringNode parent)
        {
            var node = new AGSTreeStringNode(text, _editor.Editor.Settings.Defaults.Fonts.Text);

            if (parent != null)
            {
                node.TreeNode.SetParent(parent.TreeNode);
            }
            return(node);
        }
        public void BeforeDisplayingNode(ITreeStringNode item, ITreeNodeView nodeView, bool isCollapsed, bool isHovered, bool isSelected)
        {
            _provider.BeforeDisplayingNode(item, nodeView, isCollapsed, isHovered, isSelected);
            var parent = item.TreeNode.Parent;

            if (parent != null && parent.TreeNode.Parent == null)
            {
                displayCategoryRow(nodeView, isSelected);
            }
        }
Esempio n. 21
0
        private ITreeStringNode createFeaturesLabel(string text, ITreeStringNode parent, Func <IFeaturesPanel> panel = null)
        {
            var node = new AGSTreeStringNode(text, null);

            if (parent != null)
            {
                node.TreeNode.SetParent(parent.TreeNode);
            }
            _panels[text] = panel == null ? null : new Lazy <IFeaturesPanel>(panel);
            return(node);
        }
Esempio n. 22
0
        private ITreeStringNode addToTree(string text, ITreeStringNode parent)
        {
            var node = new AGSTreeStringNode {
                Text = text
            };

            if (parent != null)
            {
                node.TreeNode.SetParent(parent.TreeNode);
            }
            return(node);
        }
Esempio n. 23
0
        private ITreeStringNode addToTree(IProperty property, ITreeStringNode parent)
        {
            if (property.IsReadonly)
            {
                return(addReadonlyNodeToTree(property, parent));
            }

            var propType = property.PropertyType;
            var editor   = _editorProvider.GetEditor(propType, _currentEntity);

            ITreeStringNode node = new InspectorTreeNode(property, editor, _font);

            return(addToTree(node, parent));
        }
Esempio n. 24
0
        public ITreeNodeView CreateNode(ITreeStringNode item, IRenderLayer layer)
        {
            var view   = _provider.CreateNode(item, layer);
            var parent = item.TreeNode.Parent;
            var node   = item as IInspectorTreeNode;

            if (parent != null && node == null)
            {
                setupCategoryRow(view);
            }
            else if (parent != null && node != null)
            {
                var layoutId    = parent.Properties.Strings.GetValue("LayoutID", Guid.NewGuid().ToString());
                var tableLayout = _layouts.GetOrAdd(layoutId, () => new TreeTableLayout(_gameEvents)
                {
                    ColumnPadding = 20f
                });
                view.ParentPanel.OnDisposed(() => tableLayout.Dispose());
                view.HorizontalPanel.RemoveComponent <IStackLayoutComponent>();
                var rowLayout = view.HorizontalPanel.AddComponent <ITreeTableRowLayoutComponent>();
                rowLayout.FixedWidthOverrides[0] = 15f; //fixed width for the expand button, as the column padding is too much for it
                rowLayout.Table = tableLayout;
            }
            if (node == null)
            {
                return(view);
            }

            int nodeId     = Interlocked.Increment(ref _nextNodeId);
            var itemTextId = (item.Text ?? "") + "_" + nodeId;

            node.Editor.AddEditorUI($"{EDITOR_PREFIX}{itemTextId}", view, node.Property);

            if (node.Property.Object is INotifyPropertyChanged propertyChanged)
            {
                PropertyChangedEventHandler onPropertyChanged = (sender, e) =>
                {
                    if (e.PropertyName != node.Property.Name)
                    {
                        return;
                    }
                    node.Property.Refresh();
                    node.Editor.RefreshUI();
                };
                propertyChanged.PropertyChanged += onPropertyChanged;
                view.ParentPanel.OnDisposed(() => propertyChanged.PropertyChanged -= onPropertyChanged);
            }

            return(view);
        }
        public ITreeNodeView CreateNode(ITreeStringNode item, IRenderLayer layer)
        {
            var view   = _provider.CreateNode(item, layer);
            var parent = item.TreeNode.Parent;

            if (parent != null && parent.TreeNode.Parent == null)
            {
                setupCategoryRow(view);
            }
            else if (parent != null && parent.TreeNode.Parent != null)
            {
                var layoutId    = parent.Properties.Strings.GetValue("LayoutID", Guid.NewGuid().ToString());
                var tableLayout = _layouts.GetOrAdd(layoutId, () => new TreeTableLayout(_gameEvents)
                {
                    ColumnPadding = 20f
                });
                view.HorizontalPanel.RemoveComponent <IStackLayoutComponent>();
                var rowLayout = view.HorizontalPanel.AddComponent <ITreeTableRowLayoutComponent>();
                rowLayout.Table = tableLayout;
            }
            var node = item as IInspectorTreeNode;

            if (node == null)
            {
                return(view);
            }

            int nodeId     = Interlocked.Increment(ref _nextNodeId);
            var itemTextId = (item.Text ?? "") + "_" + nodeId;

            node.Editor.AddEditorUI("InspectorEditor_" + itemTextId, view, node.Property);

            var propertyChanged = node.Property.Object as INotifyPropertyChanged;

            if (propertyChanged != null)
            {
                propertyChanged.PropertyChanged += (sender, e) =>
                {
                    if (e.PropertyName != node.Property.Name)
                    {
                        return;
                    }
                    node.Property.Refresh();
                    node.Editor.RefreshUI();
                };
            }

            return(view);
        }
Esempio n. 26
0
        public void BeforeDisplayingNode(ITreeStringNode item, ITreeNodeView nodeView, bool isCollapsed, bool isHovered, bool isSelected)
        {
            _provider.BeforeDisplayingNode(item, nodeView, isCollapsed, isHovered, isSelected);
            var parent = item.TreeNode.Parent;

            if (parent == null)
            {
                return;
            }
            if (item is IInspectorTreeNode node && !node.IsCategory)
            {
                return;
            }
            displayCategoryRow(nodeView, isSelected);
        }
Esempio n. 27
0
        private void addObjectToTree(IObject obj, ITreeStringNode parent)
        {
            if (obj == null || !_addedObjects.Add(obj.ID))
            {
                return;
            }
            var node = addToTree(obj.ID, parent);

            node.Properties.Strings.SetValue(Fields.Type, NodeType.Object);
            node.Properties.Entities.SetValue(Fields.Entity, obj);
            foreach (var child in obj.TreeNode.Children)
            {
                addObjectToTree(child, node);
            }
        }
Esempio n. 28
0
        private void selectArea(ITreeStringNode node)
        {
            var obj = node.Properties.Entities.GetValue(Fields.Entity);

            _inspector.Show(obj);
            var area      = obj.GetComponent <IAreaComponent>();
            var debugMask = area.Mask.DebugDraw;

            if (debugMask != null)
            {
                _lastMaskVisible         = debugMask.Visible;
                _lastSelectedMaskVisible = debugMask;
                debugMask.Visible        = true;
            }
        }
Esempio n. 29
0
        public ITreeNodeView CreateNode(ITreeStringNode item, IRenderLayer layer)
        {
            var        buttonWidth  = 20f;
            var        buttonHeight = 60f;
            IAnimation idle         = new AGSSingleFrameAnimation(new EmptyImage(buttonWidth, buttonHeight), _factory.Graphics);

            idle.Sprite.Tint = Colors.Black;
            IAnimation hovered = new AGSSingleFrameAnimation(new EmptyImage(buttonWidth, buttonHeight), _factory.Graphics);

            hovered.Sprite.Tint = Colors.Yellow;
            IAnimation pushed = new AGSSingleFrameAnimation(new EmptyImage(buttonWidth, buttonHeight), _factory.Graphics);

            pushed.Sprite.Tint = Colors.DarkSlateBlue;
            int nodeId          = Interlocked.Increment(ref _nextNodeId);
            var itemTextId      = (item.Text ?? "") + "_" + nodeId;
            var parentPanel     = _factory.UI.GetPanel("TreeNodeParentPanel_" + itemTextId, 0f, 0f, 0f, 0f, addToUi: false);
            var horizontalPanel = _factory.UI.GetPanel("TreeNodeHorizontalPanel_" + itemTextId, 0f, 0f, 0f, 0f, parentPanel, false);
            var expandButton    = _factory.UI.GetButton("ExpandButton_" + itemTextId, idle, hovered, pushed, 0f, 0f, horizontalPanel, addToUi: false);
            var label           = _factory.UI.GetLabel("TreeNodeLabel_" + itemTextId, item.Text, 0f, 0f, buttonWidth, 0f, horizontalPanel,
                                                       new AGSTextConfig(paddingTop: 0f, paddingBottom: 0f, autoFit: AutoFit.LabelShouldFitText), addToUi: false);
            var verticalPanel = _factory.UI.GetPanel("TreeNodeVerticalPanel_" + itemTextId, 0f, 0f, 0f, 0f, parentPanel, false);

            horizontalPanel.RenderLayer = layer;
            verticalPanel.RenderLayer   = layer;
            parentPanel.RenderLayer     = layer;
            expandButton.RenderLayer    = layer;
            label.RenderLayer           = layer;
            expandButton.Z       = label.Z - 1;
            horizontalPanel.Tint = Colors.Transparent;
            parentPanel.Tint     = Colors.Transparent;
            verticalPanel.Tint   = Colors.Transparent;
            expandButton.Tint    = Colors.Transparent;
            expandButton.TextBackgroundVisible = false;
            label.Tint = Colors.Transparent;
            label.TextBackgroundVisible = false;
            label.Enabled = true;
            expandButton.PixelPerfect(false);
            horizontalPanel.AddComponent <IBoundingBoxWithChildrenComponent>();
            var layout = horizontalPanel.AddComponent <IStackLayoutComponent>();

            layout.RelativeSpacing = 1f;
            layout.Direction       = LayoutDirection.Horizontal;
            layout.StartLayout();

            var nodeView = new AGSTreeNodeView(label, expandButton, parentPanel, verticalPanel, horizontalPanel);

            return(nodeView);
        }
Esempio n. 30
0
        private void addRoomToTree(IRoom room, ITreeStringNode parent)
        {
            var roomNode = addToTree($"Room: {room.ID}", parent);
            var objects  = addToTree("Objects", roomNode);
            var areas    = addToTree("Areas", roomNode);

            addObjectToTree(getRoot(room.Background), objects);
            foreach (var obj in room.Objects)
            {
                addObjectToTree(getRoot(obj), objects);
            }
            foreach (var area in room.Areas)
            {
                var node = addToTree(area.ID, areas);
                node.Properties.Strings.SetValue(Fields.Type, NodeType.Area);
                node.Properties.Entities.SetValue(Fields.Entity, area);
            }
        }