Пример #1
0
            /// <summary>
            /// 获取到烘培面板的位置;
            /// </summary>
            public Vector3 GetDrawingBoardPoint(RectCoord chunkPos, RectCoord bakePoint)
            {
                Vector3 chunkCenter = chunkPos.ToLandformChunkPixel();
                Vector3 bakePixel   = bakePoint.ToRectTerrainPixel();

                return(center + (bakePixel - chunkCenter));
            }
Пример #2
0
 /// <summary>
 /// 获取到块的所有子节点;
 /// </summary>
 public static IEnumerable <RectCoord> GetChunkChildNodes(RectCoord chunkPos)
 {
     foreach (var offset in childNodeOffsets)
     {
         yield return(offset + chunkPos);
     }
 }
Пример #3
0
        private BakeNode CreateBakeNodeAt(RectCoord offset)
        {
            BakeDrawingBoard drawingBoard = CreateGameObject <BakeDrawingBoard>("LandformBakeDrawingBoard");

            drawingBoard.transform.position = ChunkInfo.ToLandformPixel(offset);
            return(new BakeNode(offset, drawingBoard));
        }
Пример #4
0
        /// <summary>
        /// 将地图节点坐标转换为地图节点中心像素坐标;
        /// </summary>
        public static Vector3 ToLandformPixel(this RectCoord pos, float y)
        {
            Vector3 pixel = Grid.GetCenter(pos);

            pixel.y = y;
            return(pixel);
        }
Пример #5
0
        string TextUpdate()
        {
            Vector3 mousePoint;

            if (LandformRay.Instance.TryGetMouseRayPoint(out mousePoint))
            {
                RectCoord pos = mousePoint.ToRectTerrainRect();
                MapNode   node;

                if (map.TryGetValue(pos, out node))
                {
                    NodeLandformInfo landform = node.Landform;
                    //RoadNode roadNode = node.Road;
                    //BuildingNode buildingNode = node.Building;
                    return
                        ("坐标:" + pos.ToString()
                         + "\nLandform:" + landform.TypeID + ",Angle:" + landform.Angle);
                    //+ "\nRoad:" + roadNode.ID + ",Type:" + roadNode.RoadType + ",ExistRoad:" + roadNode.Exist()
                    //+ "\nBuilding:" + buildingNode.ID + ",Types:" + node.Building.BuildingType + ",ExistBuilding:" + node.Building.Exist()
                    //+ "\nTags:"
                    //+ "\nTown:" + node.Town.TownID;
                }
            }
            return("检测不到地形;");
        }
Пример #6
0
        private void CameraRender(RectCoord chunkPos, RenderTexture rt)
        {
            Vector3 cameraPos = landformBoardCollection.Center.ChangedY(5);

            bakeCamera.transform.position = cameraPos;
            bakeCamera.targetTexture      = rt;
            bakeCamera.Render();
            bakeCamera.targetTexture = null;
        }
Пример #7
0
        /// <summary>
        /// 获取到烘培的节点;
        /// </summary>
        public static IEnumerable <RectCoord> GetBakePoints(RectCoord chunkPos)
        {
            RectCoord chunkCenter = chunkPos.ToLandformChunkCenter();

            foreach (var offset in landformBakePointOffsets)
            {
                yield return(offset + chunkCenter);
            }
        }
Пример #8
0
            public BakeNode(RectCoord offset, BakeDrawingBoard drawingBoard)
            {
                if (drawingBoard == null)
                {
                    throw new ArgumentNullException(nameof(drawingBoard));
                }

                Offset       = offset;
                DrawingBoard = drawingBoard;
            }
Пример #9
0
            public static Gdi::Size GetSize(ILayoutNode self, RectCoord coord)
            {
                switch (coord)
                {
                case RectCoord.Desired:  return(new Gdi::Size(self.DesiredWidth, self.DesiredHeight));

                case RectCoord.Bounding: return(new Gdi::Size(self.BoundingWidth, self.BoundingHeight));

                default: throw new System.NotSupportedException();
                }
            }
Пример #10
0
            public static int GetHeight(ILayoutNode self, RectCoord coord)
            {
                switch (coord)
                {
                case RectCoord.Desired:  return(self.DesiredHeight);

                case RectCoord.Bounding: return(self.BoundingHeight);

                default: throw new System.NotSupportedException();
                }
            }
Пример #11
0
        public IList <CompleteRow> PasteDataFromExcel()
        {
            string str = Clipboard.GetText();

            string[] lines;
            var      delimiters   = new char[] { '\n' };
            var      completeRows = new List <CompleteRow>();

            str   = str.Replace('\r', ' ');
            lines = str.Split(delimiters, StringSplitOptions.None);
            foreach (var line in lines)
            {
                if (line != string.Empty)
                {
                    char[] delimiter = new char[] { '\t' };
                    var    values    = line.Split(delimiter, StringSplitOptions.None);
                    var    rectCoord = new RectCoord();
                    try
                    {
                        rectCoord.X = Convert.ToDouble(values[1]);
                        rectCoord.Y = Convert.ToDouble(values[2]);
                        completeRows.Add(new CompleteRow {
                            RectCoord = rectCoord, Description = values[0]
                        });
                    }
                    catch
                    {
                        try
                        {
                            rectCoord.X = Convert.ToDouble(values[0]);
                            rectCoord.Y = Convert.ToDouble(values[1]);
                            completeRows.Add(new CompleteRow
                            {
                                RectCoord = rectCoord
                            }
                                             );
                        }
                        catch
                        {
                            MessageBox.Show(
                                "Неверный формат строки в буфере обмена",
                                "Ошибка",
                                MessageBoxButton.OK,
                                MessageBoxImage.Error
                                );
                            completeRows.Clear();
                            break;
                        }
                    }
                }
            }
            return(completeRows);
        }
Пример #12
0
            //------------------------------------------------------------------------
            //  M:GetHoge(RectCoord)
            //------------------------------------------------------------------------
            #region M:GetHoge(RectCoord)
            //--------------------------------------------------------------------------
            //  Desired
            //    ↑     DesiredLeft
            //  Parent
            //    ↓     BoundingLeft
            //  Bounding
            //--------------------------------------------------------------------------
            private static int getCoordLevel(RectCoord coord)
            {
                switch (coord)
                {
                case RectCoord.Desired:  return(0);

                case RectCoord.Parent:   return(1);

                case RectCoord.Bounding: return(2);

                default: throw new System.NotSupportedException();
                }
            }
Пример #13
0
        /// <summary>
        /// 准备烘培场景;
        /// </summary>
        private void PrepareBakeScene(RectCoord chunkCoord, List <LandformBakeNode> bakePoints)
        {
            var boardList = landformBoardCollection.DrawingBoardList;

            for (int i = 0; i < bakePoints.Count; i++)
            {
                var board     = boardList[i];
                var bakePoint = bakePoints[i];

                var drawingBoardPoint = landformBoardCollection.GetDrawingBoardPoint(chunkCoord, bakePoint.Position).ChangedY(-i);
                var rotation          = Quaternion.Euler(0, bakePoint.Node.Angle, 0);
                board.SetValue(drawingBoardPoint, rotation);
                board.DisplayDiffuse(bakePoint.Res);
            }
        }
Пример #14
0
        public GeoCoord Convert(RectCoord rectCoord)
        {
            if (rectCoord.Y < 1750000)
            {
                BasicTypeString = ConfigurationManager.AppSettings["LCS46_1"];
            }
            else
            {
                BasicTypeString = ConfigurationManager.AppSettings["LCS46_2"];
            }

            ProjectionInfo src = ProjectionInfo.FromProj4String(BasicTypeString);
            ProjectionInfo trg = ProjectionInfo.FromProj4String("+proj=longlat +datum=WGS84 +no_defs");

            double[] xy = { rectCoord.Y, rectCoord.X };
            double[] h  = { 0 };
            Reproject.ReprojectPoints(xy, h, src, trg, 0, 1);
            var geoCoord = new GeoCoord {
                Lon = xy[0], Lat = xy[1], Alt = h[0]
            };

            return(geoCoord);
        }
Пример #15
0
 public static int GetBottom(this ILayoutNode self, RectCoord coord, RectCoord axis)
 {
     return(self.GetTop(coord, axis) + self.GetHeight(coord));
 }
Пример #16
0
 //--------------------------------------------------------------------------
 public static Gdi::Rectangle GetRect(this ILayoutNode self, RectCoord coord, RectCoord axis)
 {
     return(new Gdi::Rectangle(self.GetLocation(coord, axis), self.GetSize(coord)));
 }
Пример #17
0
 /// <summary>
 /// 将地图节点坐标转换为地图节点中心像素坐标;
 /// </summary>
 public static Vector3 ToLandformPixel(this RectCoord pos)
 {
     return(Grid.GetCenter(pos));
 }
Пример #18
0
 public static int GetTop(ILayoutNode self, RectCoord coord, RectCoord axis)
 {
     return(GetTop(self, getCoordLevel(coord), getCoordLevel(axis)));
 }
Пример #19
0
 public static Gdi::Point GetLocation(ILayoutNode self, RectCoord coord, RectCoord axis)
 {
     return(GetLocation(self, getCoordLevel(coord), getCoordLevel(axis)));
 }
Пример #20
0
            //--------------------------------------------------------------------------
            public static void CoordTransf(this ILayoutNode self, ref Gdi::Point pos, RectCoord before, RectCoord after)
            {
                Gdi::Point delta = self.GetLocation(before, after);

                pos.X += delta.X;
                pos.Y += delta.Y;
            }
Пример #21
0
 /// <summary>
 /// 将地形块坐标转换成地形块中心点像素坐标;
 /// </summary>
 public static Vector3 ToLandformChunkPixel(this RectCoord chunkPos)
 {
     return(Grid.GetCenter(chunkPos));
 }
Пример #22
0
 /// <summary>
 /// 转换为地形块的中心坐标;
 /// </summary>
 public static RectCoord ToLandformChunkCenter(this RectCoord chunkPos)
 {
     return(new RectCoord(chunkPos.X * ChunkRange.RealWidth, chunkPos.Y * ChunkRange.RealHeight));
 }
Пример #23
0
 /// <summary>
 /// 将地图节点坐标转换为地图节点中心像素坐标;
 /// </summary>
 public static Vector3 ToRectTerrainPixel(this RectCoord pos)
 {
     return(Grid.GetCenter(pos));
 }
Пример #24
0
 public static int GetRight(this ILayoutNode self, RectCoord coord, RectCoord axis)
 {
     return(self.GetLeft(coord, axis) + self.GetWidth(coord));
 }
Пример #25
0
            public static Gdi::Point CoordTransf(this ILayoutNode self, Gdi::Point pos, RectCoord before, RectCoord after)
            {
                Gdi::Point ret = pos;

                self.CoordTransf(ref ret, before, after);
                return(ret);
            }
Пример #26
0
 public static LandformBakeRequest CreateRequest(RectCoord chunkCoord, Map <RectCoord> map)
 {
     throw new NotImplementedException();
 }
Пример #27
0
        private void Update()
        {
            RectCoord chunkPos = transform.position.ToLandformChunkRect();

            SetCenter(chunkPos);
        }
Пример #28
0
 public void SetCenter(RectCoord center)
 {
     displayRange.Center = center;
 }
Пример #29
0
 internal LandformBakeRequest(RectCoord chunkCoord, List <LandformBakeNode> bakePoints)
 {
     ChunkCoord = chunkCoord;
     BakePoints = bakePoints;
 }