예제 #1
0
 public override void GetUIComponents(MarkupRegularLine line, List <EditorItem> components, UIComponent parent, bool isTemplate = false)
 {
     base.GetUIComponents(line, components, parent, isTemplate);
     components.Add(AddBaseProperty(this, parent));
     components.Add(AddHeightProperty(this, parent));
     components.Add(AddSpaceProperty(this, parent));
     if (!isTemplate)
     {
         components.Add(AddInvertProperty(this, parent));
     }
 }
예제 #2
0
        private BoolListPropertyPanel AddClipSidewalkProperty(MarkupRegularLine line)
        {
            var clipSidewalk = ComponentPool.Get <BoolListPropertyPanel>(LineProperties, nameof(line.ClipSidewalk));

            clipSidewalk.Text = NodeMarkup.Localize.LineEditor_ClipSidewalk;
            clipSidewalk.Init(NodeMarkup.Localize.StyleOption_No, NodeMarkup.Localize.StyleOption_Yes);
            clipSidewalk.SelectedObject         = line.ClipSidewalk;
            clipSidewalk.OnSelectObjectChanged += (value) => line.ClipSidewalk.Value = value;

            return(clipSidewalk);
        }
예제 #3
0
        protected override IStyleData Calculate(MarkupRegularLine line, ITrajectory trajectory, MarkupLOD lod)
        {
            if (!CheckDashedLod(lod, Height, Base))
            {
                return(new MarkupStyleParts());
            }

            var borders = line.Borders;
            var coef    = Mathf.Cos(Angle * Mathf.Deg2Rad);

            return(new MarkupStyleParts(StyleHelper.CalculateDashed(trajectory, Base / coef, Space / coef, CalculateDashes)));

            IEnumerable <MarkupStylePart> CalculateDashes(ITrajectory trajectory, float startT, float endT)
            {
                if (StyleHelper.CalculateDashedParts(borders, trajectory, Invert ? endT : startT, Invert ? startT : endT, Base, Height / (Invert ? 2 : -2), Height, Color, out MarkupStylePart dash))
                {
                    dash.MaterialType = MaterialType.Triangle;
                    dash.Angle       -= Angle * Mathf.Deg2Rad;
                    yield return(dash);
                }
            }
        }
예제 #4
0
        public override void GetUIComponents(MarkupRegularLine line, List <EditorItem> components, UIComponent parent, bool isTemplate = false)
        {
            base.GetUIComponents(line, components, parent, isTemplate);
            components.Add(AddBaseProperty(this, parent));
            components.Add(AddHeightProperty(this, parent));
            components.Add(AddSpaceProperty(this, parent));
            var angle = AddAngleProperty(parent);

            components.Add(angle);
            if (!isTemplate)
            {
                var invertButton = AddInvertProperty(parent);
                components.Add(invertButton);

                invertButton.OnButtonClick += OnButtonClick;

                void OnButtonClick()
                {
                    Invert.Value = !Invert;
                    Angle.Value  = -Angle;
                    angle.Value  = Angle;
                }
            }
        }
예제 #5
0
 private void LeftBorgerChanged(MarkupRegularLine line) => EditObject.LeftBorder.Value   = line;
예제 #6
0
        private void FillBorder(CrosswalkBorderSelectPropertyPanel panel, Action <MarkupRegularLine> action, MarkupRegularLine[] lines, MarkupRegularLine value)
        {
            panel.OnValueChanged -= action;
            panel.Clear();
            panel.AddRange(lines);
            panel.Value = value;

            if (Settings.ShowPanelTip)
            {
                panel.isVisible     = true;
                panel.EnableControl = lines.Any();
            }
            else
            {
                panel.EnableControl = true;
                panel.isVisible     = lines.Any();
            }

            panel.OnValueChanged += action;
        }
예제 #7
0
 private void RightBorgerChanged(MarkupRegularLine line) => EditObject.RightBorder = line;