/// <summary> /// 获取到烘培面板的位置; /// </summary> public Vector3 GetDrawingBoardPoint(RectCoord chunkPos, RectCoord bakePoint) { Vector3 chunkCenter = chunkPos.ToLandformChunkPixel(); Vector3 bakePixel = bakePoint.ToRectTerrainPixel(); return(center + (bakePixel - chunkCenter)); }
/// <summary> /// 获取到块的所有子节点; /// </summary> public static IEnumerable <RectCoord> GetChunkChildNodes(RectCoord chunkPos) { foreach (var offset in childNodeOffsets) { yield return(offset + chunkPos); } }
private BakeNode CreateBakeNodeAt(RectCoord offset) { BakeDrawingBoard drawingBoard = CreateGameObject <BakeDrawingBoard>("LandformBakeDrawingBoard"); drawingBoard.transform.position = ChunkInfo.ToLandformPixel(offset); return(new BakeNode(offset, drawingBoard)); }
/// <summary> /// 将地图节点坐标转换为地图节点中心像素坐标; /// </summary> public static Vector3 ToLandformPixel(this RectCoord pos, float y) { Vector3 pixel = Grid.GetCenter(pos); pixel.y = y; return(pixel); }
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("检测不到地形;"); }
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; }
/// <summary> /// 获取到烘培的节点; /// </summary> public static IEnumerable <RectCoord> GetBakePoints(RectCoord chunkPos) { RectCoord chunkCenter = chunkPos.ToLandformChunkCenter(); foreach (var offset in landformBakePointOffsets) { yield return(offset + chunkCenter); } }
public BakeNode(RectCoord offset, BakeDrawingBoard drawingBoard) { if (drawingBoard == null) { throw new ArgumentNullException(nameof(drawingBoard)); } Offset = offset; DrawingBoard = drawingBoard; }
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(); } }
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(); } }
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); }
//------------------------------------------------------------------------ // 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(); } }
/// <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); } }
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); }
public static int GetBottom(this ILayoutNode self, RectCoord coord, RectCoord axis) { return(self.GetTop(coord, axis) + self.GetHeight(coord)); }
//-------------------------------------------------------------------------- public static Gdi::Rectangle GetRect(this ILayoutNode self, RectCoord coord, RectCoord axis) { return(new Gdi::Rectangle(self.GetLocation(coord, axis), self.GetSize(coord))); }
/// <summary> /// 将地图节点坐标转换为地图节点中心像素坐标; /// </summary> public static Vector3 ToLandformPixel(this RectCoord pos) { return(Grid.GetCenter(pos)); }
public static int GetTop(ILayoutNode self, RectCoord coord, RectCoord axis) { return(GetTop(self, getCoordLevel(coord), getCoordLevel(axis))); }
public static Gdi::Point GetLocation(ILayoutNode self, RectCoord coord, RectCoord axis) { return(GetLocation(self, getCoordLevel(coord), getCoordLevel(axis))); }
//-------------------------------------------------------------------------- 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; }
/// <summary> /// 将地形块坐标转换成地形块中心点像素坐标; /// </summary> public static Vector3 ToLandformChunkPixel(this RectCoord chunkPos) { return(Grid.GetCenter(chunkPos)); }
/// <summary> /// 转换为地形块的中心坐标; /// </summary> public static RectCoord ToLandformChunkCenter(this RectCoord chunkPos) { return(new RectCoord(chunkPos.X * ChunkRange.RealWidth, chunkPos.Y * ChunkRange.RealHeight)); }
/// <summary> /// 将地图节点坐标转换为地图节点中心像素坐标; /// </summary> public static Vector3 ToRectTerrainPixel(this RectCoord pos) { return(Grid.GetCenter(pos)); }
public static int GetRight(this ILayoutNode self, RectCoord coord, RectCoord axis) { return(self.GetLeft(coord, axis) + self.GetWidth(coord)); }
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); }
public static LandformBakeRequest CreateRequest(RectCoord chunkCoord, Map <RectCoord> map) { throw new NotImplementedException(); }
private void Update() { RectCoord chunkPos = transform.position.ToLandformChunkRect(); SetCenter(chunkPos); }
public void SetCenter(RectCoord center) { displayRange.Center = center; }
internal LandformBakeRequest(RectCoord chunkCoord, List <LandformBakeNode> bakePoints) { ChunkCoord = chunkCoord; BakePoints = bakePoints; }