/// <summary>
        /// Стандартный конструктор. Инициализирует панель рассчёта дистанций
        /// </summary>
        /// <param name="w">Ссылка на главное окно с отображаемой картой</param>
        public DistanceMeasureControl(MapWindow w)
        {
            InitializeComponent();

            mapWindow = w;


            // Создаём делегаты
            mouseLMBHandler = new MouseButtonEventHandler(MouseLMBDown);
            mouseRMBHandler = new MouseButtonEventHandler(MouseRMBDown);

            // Подписываем их на соответствующие события в главном окне
            mapWindow.MainPanel.MouseLeftButtonDown  += mouseLMBHandler;
            mapWindow.MainPanel.MouseRightButtonDown += mouseRMBHandler;

            // Инициализируем DistanceLine, добавляем её на главную панель
            distanceViewer = new DistanceLine(mapWindow.MapPanel, FIRST_MARKER_BRUSH, SECOND_MARKER_BRUSH);
            distanceViewer.Hide();

            // Инициализируем PointMarker-ы, добавляем их на главную панель
            firstPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            firstPointMarker.SetStrokeColor(FIRST_MARKER_BRUSH);
            firstPointMarker.Hide();

            secondPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            secondPointMarker.SetStrokeColor(SECOND_MARKER_BRUSH);
            secondPointMarker.Hide();

            rmbMenu = this.FindResource("rmbMenu") as ContextMenu;
            rmbMenu.PlacementTarget = mapWindow.MainPanel;

            mapWindow.SetStatus("Включён режим: \"Измерение расстояний\"");
        }
    Vector2 GetPosOnCompas(PointMarker marker)
    {
        Vector2 playerPos = new Vector2(player.position.x, player.position.z);
        Vector2 playerFwd = new Vector2(player.forward.x, player.forward.z);
        float   angle     = Vector2.SignedAngle(marker.position - playerPos, playerFwd);

        return(new Vector2(compasUnit * angle, yIcon));
    }
    public void AddPointMarker(PointMarker marker)
    {
        GameObject newMarker = Instantiate(pointIcon, compas.transform);

        marker.image        = newMarker.GetComponent <Image>();
        marker.image.sprite = marker.icon;

        pointMarkers.Add(marker);
    }
Example #4
0
    public void CreatePosMarker(PathDatabase.LineInfo info, PointMarker.MarkerType type, int code = -1)
    {
        PointMarker pt = Instantiate(posMarker, Vector3.zero, Quaternion.identity).GetComponent <PointMarker>();

        pt.Set(info, type, code);

        pt.transform.SetParent(parent);

        ptList.Add(pt);
    }
Example #5
0
    public void DeleteLatelyMarker()
    {
        int         count = ptList.Count;
        PointMarker pt    = ptList[count - 1];

        ptList.RemoveAt(count - 1);

        Destroy(pt.gameObject);

        UpdatePointMarker();
    }
Example #6
0
 Pixbuf GetRowMarker(object row)
 {
     return(PointMarker.GetIconPixbuf(
                ViewModel.GetAddressMarker(
                    ViewModel.GetMarkerIndex(
                        row,
                        pixbufMarkers.Length
                        )
                    ).ToString(),
                ViewModel.GetMarkerShape(row)
                ));
 }
Example #7
0
 void UpdateRoutesPixBuf()
 {
     if (pixbufMarkers != null && ViewModel.RoutesOnDay.Count == pixbufMarkers.Length)
     {
         return;
     }
     pixbufMarkers = new Pixbuf[ViewModel.RoutesOnDay.Count];
     for (int i = 0; i < ViewModel.RoutesOnDay.Count; i++)
     {
         PointMarkerShape shape = ViewModel.GetMarkerShapeFromBottleQuantity(ViewModel.RoutesOnDay[i].TotalFullBottlesToClient);
         pixbufMarkers[i] = PointMarker.GetIconPixbuf(ViewModel.GetAddressMarker(i).ToString(), shape);
     }
 }
Example #8
0
        public static LineAndMarker <MarkerPointsGraph> AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource,
                                                                     Pen linePen, PointMarker marker, Description description)
        {
            if (pointSource == null)
            {
                throw new ArgumentNullException("pointSource");
            }

            var res = new LineAndMarker <MarkerPointsGraph>();

            if (linePen != null)             // We are requested to draw line graphs
            {
                LineGraph graph = new LineGraph
                {
                    DataSource = pointSource,
                    LinePen    = linePen
                };
                if (description != null)
                {
                    NewLegend.SetDescription(graph, description.Brief);
                    graph.Description = description;
                }
                if (marker == null)
                {
                    // Add inclination filter only to graphs without markers
                    // graph.Filters.Add(new InclinationFilter());
                }

                res.LineGraph = graph;

                graph.Filters.Add(new FrequencyFilter());
                plotter.Children.Add(graph);
            }

            if (marker != null)             // We are requested to draw marker graphs 画标记点
            {
                MarkerPointsGraph markerGraph = new MarkerPointsGraph
                {
                    DataSource = pointSource,
                    Marker     = marker
                };

                res.MarkerGraph = markerGraph;

                plotter.Children.Add(markerGraph);
            }

            return(res);
        }
Example #9
0
        private PointMarker FillBaseMarker(GeographicGroup baseMarker)
        {
            var addressMarker = new PointMarker(
                new PointLatLng(
                    (double)baseMarker.BaseLatitude,
                    (double)baseMarker.BaseLongitude
                    ),
                PointMarkerType.vodonos,
                PointMarkerShape.custom
                )
            {
                Tag = baseMarker
            };

            return(addressMarker);
        }
Example #10
0
        private void Form1_Load(object sender, EventArgs e)
        {
            TileManager.Singleton.TileLoaders = new List <TileImgLoaderBase>
            {
                //new TileImgFileLoader("map"){ Priority=999,ThreadCount=5},
                new GoogleChinaHybridTileLoader()
                {
                    Priority = 9, ThreadCount = 10
                },
                //new TileImgHttpLoader("http://127.0.0.1:8888/map"){ Priority=1},
            };

            this.bMapControl1.IsShowMapMsg    = true;
            this.bMapControl1.IsShowRenderMsg = true;
            this.bMapControl1.IsShowGrid      = false;
            this.bMapControl1.TileType        = TileType.GCJ02;

            this.bMapControl1.MapCenter = new BMap.Core.Model.PointLatLng(113.415041, 23.1824994);
            this.bMapControl1.Zoom      = 17;

            //this.bMapControl1.GridLineColor = Color.FromArgb(0x55, 0x99, 0x99, 0x99);


            //this.bMapControl1.GridLineColor =Color.Blue;
            var m = new AreaMarker("多边形1");

            m.lstPLatLng = new List <BMap.Core.Model.PointLatLng>()
            {
                new BMap.Core.Model.PointLatLng(113.415041, 23.1824994),
                new BMap.Core.Model.PointLatLng(113.415241, 23.1824994),
                new BMap.Core.Model.PointLatLng(113.415241, 23.1824194),
                new BMap.Core.Model.PointLatLng(113.415041, 23.1823594)
            };

            layer1.AddMarker(m);
            var pm = new PointMarker("点1")
            {
                Position = new BMap.Core.Model.PointLatLng(113.415441, 23.1823494)
            };

            layer1.AddMarker(pm);
            bMapControl1.AddLayer(layer1);

            bMapControl1.UserDraw = new UserDrawing(bMapControl1);
            //bMapControl1.UserDraw.DrawMode = EditMode.DrawPie;
        }
Example #11
0
        private PointMarker FillAddressMarker(Order order, PointMarkerType type, PointMarkerShape shape, GMapOverlay overlay, RouteList route)
        {
            var addressMarker = new PointMarker(new PointLatLng((double)order.DeliveryPoint.Latitude, (double)order.DeliveryPoint.Longitude), type, shape)
            {
                Tag = order
            };

            string ttText = order.DeliveryPoint.ShortAddress;

            if (order.Total19LBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 19л: {0}", order.Total19LBottlesToDeliver);
            }
            if (order.Total6LBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 6л: {0}", order.Total6LBottlesToDeliver);
            }
            if (order.Total600mlBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 0,6л: {0}", order.Total600mlBottlesToDeliver);
            }

            ttText += string.Format($"\nЗабор бутылей: {order.BottlesReturn}");

            ttText += string.Format("\nВремя доставки: {0}\nРайон: {1}",
                                    order.DeliverySchedule?.Name ?? "Не назначено",
                                    ViewModel.LogisticanDistricts?.FirstOrDefault(x => x.DistrictBorder.Contains(order.DeliveryPoint.NetTopologyPoint))?.DistrictName);

            addressMarker.ToolTipText = ttText;

            var identicalPoint = overlay.Markers.Count(g => g.Position.Lat == (double)order.DeliveryPoint.Latitude && g.Position.Lng == (double)order.DeliveryPoint.Longitude);
            var pointShift     = 5;

            if (identicalPoint >= 1)
            {
                addressMarker.Offset = new System.Drawing.Point(identicalPoint * pointShift, identicalPoint * pointShift);
            }

            if (route != null)
            {
                addressMarker.ToolTipText += string.Format(" Везёт: {0}", route.Driver.ShortName);
            }

            return(addressMarker);
        }
Example #12
0
    public void UpdatePointMarker()
    {
        int count = ptList.Count;

        for (int i = 0; i < count; ++i)
        {
            if (ptList[i].markerType == PointMarker.MarkerType.BezierPointer)
            {
                ptList[i].SetLine();
                PointMarker check = ptList[i].CheckType();
                if (check != null)
                {
                    ptList.RemoveAt(i);
                    Destroy(check.gameObject);
                }
            }
        }
    }
Example #13
0
        public override void OnLeftMouseButtonDown(Location clickLocation, Vector imageCor, Vector imageSizePixel)
        {
            if (clickLocation == Location.NONE)
            {
                return;
            }

            // hit an existing?
            _selectedMarker = MarkerHitTest(clickLocation, imageCor, imageSizePixel);
            if (_selectedMarker >= 0)
            {
                return;
            }

            var newMarker = new PointMarker()
            {
                StartMarker        = imageCor,
                EndMarker          = imageCor,
                InterpolatedMarker = imageCor
            };

            _selectedMarker = _markerList.Count;
            _markerList.Add(newMarker);
        }
Example #14
0
        void ConfigureWnd()
        {
            var ms = new List <object[]> {
                new object[] {
                    PointMarker.GetIconPixbuf("vodonos", PointMarkerShape.custom),
                    PointMarker.GetIconPixbuf("vodonos", PointMarkerShape.custom),
                    PointMarker.GetIconPixbuf("vodonos", PointMarkerShape.custom),
                    PointMarker.GetIconPixbuf("vodonos", PointMarkerShape.custom),
                    "База\\Склад погрузки-разгрузки"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.overduetriangle),
                    "Адрес с количеством бутылей не более 5 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.overduecircle),
                    "Адрес с количеством бутылей 6-9 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.square),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.square),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.square),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.overduesquare),
                    "Адрес с количеством бутылей 10-19 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.cross),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.cross),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.cross),
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.overduecross),
                    "Адрес с количеством бутылей 20-39 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.overduestar),
                    "Адрес с количеством бутылей не менее 40 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.overduecircle),
                    "Адрес не в маршрутном листе"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.overduecircle),
                    "График доставки продолжительностью менее часа"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.overduecircle),
                    "Адрес с временем доставки до 12:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.overduecircle),
                    "Адрес с временем доставки до 15:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.overduecircle),
                    "Адрес с временем доставки до 18:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.overduecircle),
                    "Адрес с временем доставки после 18:00"
                }
            };

            lblInfo.Text = "Перетаскивание карты, правой кнопкой мыши.\n" +
                           "Обычное(прямоугольное) выделение адресов на карте осуществляется перемещением мыши с нажатой левой кнопкой.\n" +
                           "Для выделения по одному маркеру, включите CAPS LOCK и левой кнопкой мыши для выделения\\удаления, кликните по нему\n" +
                           "Для выделения полигоном(сложной формой), зажмите CTRL и левой кнопкой установите углы очерчивающие полигон. " +
                           "В процессе работы CTRL можно отпускать и зажимат заново для добавления новых углов. " +
                           "Уже зафиксированные углы полигона можно перетаскивать левой кнопкой мыши." + "\n\tОписание маркеров:";
            labelOrdersInfo.Text = "Маркеры в виде звезды - переносы из недовозов, возникших по вине водителей или отделов  ВВ" +
                                   "\n -Оперативная сводка не включает в себя:" +
                                   "\n- Самовывозы" +
                                   "\n- Закрывающие документы" +
                                   "\n- Выезды мастера" +
                                   "\n- Заказы, закрытые без доставки" +
                                   "\n- Статусы Новый, Отменен, Ожидание оплаты";
            lblInfo.LineWrap     = true;
            lblInfo.WidthRequest = 400;
            lblInfo.LineWrapMode = Pango.WrapMode.WordChar;

            treeMarkers.HeadersVisible = false;
            treeMarkers.ColumnsConfig  = FluentColumnsConfig <object[]>
                                         .Create()
                                         .AddColumn("Маркер")
                                         .AddPixbufRenderer(x => x[0] as Pixbuf)
                                         .AddPixbufRenderer(x => x[1] as Pixbuf)
                                         .AddPixbufRenderer(x => x[2] as Pixbuf)
                                         .AddPixbufRenderer(x => x[3] as Pixbuf)
                                         .AddTextRenderer(x => "...")
                                         .AddColumn("Описание")
                                         .AddTextRenderer(x => " - " + (string)x[4])
                                         .Finish();

            treeMarkers.SetItemsSource(ms);
        }
Example #15
0
 /// <summary>
 /// Clears the point marker's coordinates.
 /// </summary>
 public void ClearAllPointMarkers()
 {
     _pointMarkers.Clear();
     _singlePointMarker = null;
 }
Example #16
0
        void ConfigureWnd()
        {
            var ms = new List <object[]> {
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.triangle),
                    "Адрес с количеством бутылей менее 6 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.circle),
                    "Адрес с количеством бутылей 6-10 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.square),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.square),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.square),
                    "Адрес с количеством бутылей 10-20 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.cross),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.cross),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.cross),
                    "Адрес с количеством бутылей 20-40 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("orange", PointMarkerShape.star),
                    PointMarker.GetIconPixbuf("green", PointMarkerShape.star),
                    "Адрес с количеством бутылей более 40 шт."
                },
                new object[] {
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("black", PointMarkerShape.star),
                    "Адрес не в маршрутном листе"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("black_and_red", PointMarkerShape.star),
                    "График доставки продолжительностью менее часа"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("red_stripes", PointMarkerShape.star),
                    "Адрес с временем доставки до 12:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("yellow_stripes", PointMarkerShape.star),
                    "Адрес с временем доставки до 15:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("green_stripes", PointMarkerShape.star),
                    "Адрес с временем доставки до 18:00"
                },
                new object[] {
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.circle),
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.triangle),
                    PointMarker.GetIconPixbuf("grey_stripes", PointMarkerShape.star),
                    "Адрес с временем доставки после 18:00"
                }
            };

            lblInfo.Text = "Перетаскивание карты, правой кнопкой мыши.\n" +
                           "Обычное(прямоугольное) выделение адресов на карте осуществляется перемещением мыши с нажатой левой кнопкой.\n" +
                           "Для выделения по одному маркеру, включите CAPS LOCK и левой кнопкой мыши для выделения\\удаления, кликните по нему\n" +
                           "Для выделения полигоном(сложной формой), зажмите CTRL и левой кнопкой установите углы очерчивающие полигон. " +
                           "В процессе работы CTRL можно отпускать и зажимат заново для добавления новых углов. " +
                           "Уже зафиксированные углы полигона можно перетаскивать левой кнопкой мыши." + "\n\tОписание маркеров:";
            lblInfo.LineWrap     = true;
            lblInfo.WidthRequest = 400;
            lblInfo.LineWrapMode = Pango.WrapMode.WordChar;

            treeMarkers.HeadersVisible = false;
            treeMarkers.ColumnsConfig  = FluentColumnsConfig <object[]>
                                         .Create()
                                         .AddColumn("Маркер")
                                         .AddPixbufRenderer(x => x[0] as Pixbuf)
                                         .AddPixbufRenderer(x => x[1] as Pixbuf)
                                         .AddPixbufRenderer(x => x[2] as Pixbuf)
                                         .AddTextRenderer(x => "...")
                                         .AddColumn("Описание")
                                         .AddTextRenderer(x => " - " + (string)x[3])
                                         .Finish();

            treeMarkers.SetItemsSource(ms);
        }
Example #17
0
        public DirectGeodTaskControl(MapWindow w)
        {
            InitializeComponent();

            mapWindow = w;

            // Создаём делегаты
            mouseLMBHandler = new MouseButtonEventHandler(MouseLMBDown);
            mouseRMBHandler = new MouseButtonEventHandler(MouseRMBDown);

            // Подписываем их на соответствующие события в главном окне
            mapWindow.MainPanel.MouseLeftButtonDown  += mouseLMBHandler;
            mapWindow.MainPanel.MouseRightButtonDown += mouseRMBHandler;

            // Инициализируем PointMarker-ы, добавляем их на главную панель
            APointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            APointMarker.SetStrokeColor(A_POINT_MARKER_BRUSH);
            APointMarker.Hide();

            BPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            BPointMarker.SetStrokeColor(B_POINT_MARKER_BRUSH);
            BPointMarker.Hide();

            CPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            CPointMarker.SetStrokeColor(C_POINT_COLOR_BRUSH);
            CPointMarker.Hide();

            //studAPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            //studAPointMarker.SetStrokeColor(STUD_A_POINT_MARKER_BRUSH);
            //studAPointMarker.Hide();

            //studBPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            //studBPointMarker.SetStrokeColor(STUD_B_POINT_MARKER_BRUSH);
            //studBPointMarker.Hide();

            //studCPointMarker = new PointMarker(mapWindow.MapPanel, 0, 0);
            //studCPointMarker.SetStrokeColor(STUD_C_POINT_MARKER_BRUSH);
            //studCPointMarker.Hide();

            // Выставим соответствующий цвет шрифтов, чтобы маркеры на карте можно было отличить друг от друга
            APointHint.Foreground = A_POINT_MARKER_BRUSH;
            BPointHint.Foreground = B_POINT_MARKER_BRUSH;
            CPointHint.Foreground = C_POINT_COLOR_BRUSH;

            // Инициализируем DistanceLine-ы, добавим их на панель
            ABDistanceLine = new DistanceLine(mapWindow.MapPanel, A_POINT_MARKER_BRUSH, B_POINT_MARKER_BRUSH);
            ABDistanceLine.Hide();
            BCDistanceLine = new DistanceLine(mapWindow.MapPanel, B_POINT_MARKER_BRUSH, C_POINT_COLOR_BRUSH);
            BCDistanceLine.Hide();
            CADistanceLine = new DistanceLine(mapWindow.MapPanel, C_POINT_COLOR_BRUSH, A_POINT_MARKER_BRUSH);
            CADistanceLine.Hide();

            //studABDistanceLine = new DistanceLine(mapWindow.MapPanel, STUD_A_POINT_MARKER_BRUSH, STUD_B_POINT_MARKER_BRUSH);
            //studABDistanceLine.Hide();
            //studBCDistanceLine = new DistanceLine(mapWindow.MapPanel, STUD_B_POINT_MARKER_BRUSH, STUD_C_POINT_MARKER_BRUSH);
            //studBCDistanceLine.Hide();
            //studCADistanceLine = new DistanceLine(mapWindow.MapPanel, STUD_C_POINT_MARKER_BRUSH, STUD_A_POINT_MARKER_BRUSH);
            //studCADistanceLine.Hide();

            rmbMenu = this.FindResource("rmbMenu") as ContextMenu;
            rmbMenu.PlacementTarget = mapWindow.MainPanel;

            mapWindow.SetStatus("Включён режим: \"Прямая геодезическая задача\"");
        }
Example #18
0
 /// <summary>
 /// Creates a new point marker and adds it to the _pointMarkers list.
 /// If the _pointMarkers list is not empty, the Draw() function goes into time-slice mode.
 /// </summary>
 /// <param name="centre">The centre of the new marker</param>
 /// <param name="pointValue">The value of the point (its label)</param>
 /// <param name="highlight"> null for an output point, true for a used input point, false for an unused input point.</param>
 public void CreatePointMarker(PointF centre, string pointValue, bool isInput, bool isUsed)
 {
     PointMarker pm = new PointMarker(centre.X, centre.Y, pointValue,
         _scale, _fieldPanelCentreX, _fieldPanelCentreY, isInput, isUsed);
     _pointMarkers.Add(pm);
 }
Example #19
0
 /// <summary>
 /// Creates a single point marker (displayed while the right-mouse button point-info
 /// message box is displayed).
 /// </summary>
 /// <param name="centre">The centre of the new marker</param>
 /// <param name="pointValue">The value of the point (its label)</param>
 /// <param name="highlight"> null for an output point, true for a used input point, false for an unused input point.</param>
 public void CreateSinglePointMarker(ExpansionFieldPointInfo pointInfo)
 {
     _singlePointMarker = new PointMarker(pointInfo.location.X, pointInfo.location.Y, pointInfo.value.ToString(),
                                         _scale, _fieldPanelCentreX, _fieldPanelCentreY,
                                         pointInfo.isInput, pointInfo.isUsed);
 }
Example #20
0
    public void PlayerSquadMove(int breach, int state, bool sync)
    {
        gameObject.GetComponent <LineRenderer>().positionCount = 0;
        placing = false;
        PointMarker thisPoint = Instantiate(pointMarker, tempPos, Quaternion.identity).GetComponent <PointMarker>();

        thisPoint.SetColumn(true, tempColor);
        PlayerRemovePoint(playerSelect);
        for (int k = 0; k < 3; k++)
        {
            if (playerSelect[k])
            {
                playerLastPoint[k] = thisPoint.transform;
                playerSquad[k].SetOrder(false);
            }
        }

        PlayerUpdateLeaders();

        int firstSelect = -1;

        for (int i = 0; i < 3; i++)
        {
            if (playerSelect[i])
            {
                if (firstSelect == -1)
                {
                    firstSelect = i;
                }
                m_gui.SetText(i, "MOVING");
                if (breach != -1)
                {
                    SquadMember.DoorState thisState = (SquadMember.DoorState)breach;
                    string stateString = thisState.ToString();

                    stateString = stateString.Replace("DOOR_", "");
                    if (sync)
                    {
                        stateString = "SYNC " + stateString;
                    }
                    else
                    {
                        stateString += "ING DOOR";
                    }
                    m_gui.SetText(i, stateString);
                }
                player.SetFollowing(i, false);
            }
        }
        if (PlayerGetLeader(firstSelect) == -1)
        {
            return;
        }
        else
        {
            if (state == (int)SquadMember.GoalState.GOAL_OBJECTIVE)
            {
                playerSquad[PlayerGetLeader(firstSelect)].SetObjective(tempObjective);
            }
            playerSquad[PlayerGetLeader(firstSelect)].SetWaypoint(thisPoint.transform, state);
            if (breach != -1)
            {
                playerSquad[PlayerGetLeader(firstSelect)].EnterDoor(tempDoor, tempSide, breach);
                playerSquad[PlayerGetLeader(firstSelect)].SetSync(sync);
            }
        }
    }
Example #21
0
    void DrawPath(bool setPath)
    {
        UnityEngine.AI.NavMeshPath  testPath = new UnityEngine.AI.NavMeshPath();
        UnityEngine.AI.NavMeshAgent agent    = squad[squadSelect, 0].GetComponent <UnityEngine.AI.NavMeshAgent>();

        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            agent.CalculatePath(hit.point, testPath);

            Vector3 prevCorner = testPath.corners[0];
            Vector3 spawnPos   = prevCorner;
            float   lifeSpan   = 2.0f;

            for (int i = 1; i < testPath.corners.Length; i++)
            {
                Vector3 curCorner = testPath.corners[i];
                Vector3 dir       = Vector3.Normalize((curCorner + Vector3.up) - (prevCorner + Vector3.up));
                for (float j = 0.0f; j < Vector3.Distance(prevCorner, curCorner); j += 1.0f)
                {
                    if (!Physics.Raycast(prevCorner + (j - 1) * dir, dir, out hit, 1.0f, (1 << 12)))
                    {
                        if (!setPath)
                        {
                            PointMarker thisPoint = Instantiate(pointMarker, prevCorner + Vector3.Normalize(curCorner - prevCorner) * j, Quaternion.identity).GetComponent <PointMarker>();
                            thisPoint.SetLifespan(0.005f);
                            thisPoint.SetColorMult(lifeSpan);
                            thisPoint.SetColor(colors[squadSelect]);
                            lifeSpan += 0.15f;
                        }
                        else if (j >= (Vector3.Distance(prevCorner, curCorner) - 1.0f) && i >= testPath.corners.Length - 1)
                        {
                            PointMarker thisPoint = Instantiate(pointMarker, prevCorner + Vector3.Normalize(curCorner - prevCorner) * j, Quaternion.identity).GetComponent <PointMarker>();
                            thisPoint.SetColumn(true, colors[squadSelect]);
                            if (lastPoint[squadSelect] != null)
                            {
                                Destroy(lastPoint[squadSelect].gameObject);
                            }
                            lastPoint[squadSelect] = thisPoint.transform;
                            SquadMove(thisPoint.transform);
                        }
                    }
                    else
                    {
                        i = 90000;
                        if (setPath)
                        {
                            PointMarker thisPoint = Instantiate(pointMarker, prevCorner + Vector3.Normalize(curCorner - prevCorner) * (j - 1.0f), Quaternion.identity).GetComponent <PointMarker>();
                            thisPoint.SetColumn(true, colors[squadSelect]);
                            if (lastPoint[squadSelect] != null)
                            {
                                Destroy(lastPoint[squadSelect].gameObject);
                            }
                            lastPoint[squadSelect] = thisPoint.transform;
                            SquadMove(thisPoint.transform);
                        }
                        break;
                    }
                }
                prevCorner = curCorner;
            }
        }
    }