private void UpdatePath() { //pathFound.Clear(); if (cachedPathfinder != null) { uiPath.RemoveAllPoints(); if (cachedPathfinder.state == PathfindingState.Found) { cachedPathfinder.GetResult(pathFound); Vector2 rectSize = (this.transform as RectTransform).rect.size; foreach (var g in pathFound) { UISquareTileElement ele = this.tiles[g.x, g.y]; RectTransform eleRect = ele.transform as RectTransform; Vector2 elePos = eleRect.anchoredPosition; Vector2 eleSize = eleRect.rect.size; Vector2 pos = new Vector2((elePos.x - eleSize.x / 2) / rectSize.x, (elePos.y - eleSize.y / 2) / rectSize.y); uiPath.AddPoint(pos); } uiPath.rectTransform.anchoredPosition = (tiles[0, 0].transform as RectTransform).anchoredPosition; //uiPath.rectTransform.Strentch(); } } }
private void UpdateElements() { IGraphData <Tile> data = cachedContext.GetGraphData(); SquareTileMapData sData = data as SquareTileMapData; if (tiles == null || tiles.Length == 0) { tiles = new UISquareTileElement[sData.RangeX, sData.RangeY]; for (int i = 0; i < sData.RangeX; ++i) { for (int j = 0; j < sData.RangeY; ++j) { UISquareTileElement tile = Instantiate <UISquareTileElement>(template, this.tilesRoot); tile.Init(i, j, cachedContext); (tile.transform as RectTransform).anchoredPosition = new Vector2((i + 0.5f) * 60f, (j + 0.5f) * 60f); tiles[i, j] = tile; tile.UpdateView(); } } } else { foreach (var cord in dirtyElements) { UISquareTileElement tile = this.tiles[cord.x, cord.y]; tile.UpdateView(); } dirtyElements.Clear(); } }