public void SetIntoTile(Transform trans, TileCoord tilePos, Vector3 localPos) { GroundTile tile = GroundHelper.Graphic.GetTileByRowColumn(tilePos); trans.parent = tile.gobj.transform; trans.localPosition = localPos / GroundManager.Inst.tileSize; }
public TileCoord GetMapTile(ITileLogicChild tileChild, out Vector3 localPos) { TileCoord tilePos = GroundHelper.Logic.GetTileCoordByPos(logicHolder.position, GroundManager.Inst.tileSize, tileChild.transform.position); localPos = tileChild.transform.position - GroundHelper.Common.GetTilePos(logicHolder.position, GroundManager.Inst.tileSize, tilePos); return(tilePos); }
internal static Vector3 GetTilePos(Vector3 centerPos, float tileSize, TileCoord tileCoord) { int offsetRow = tileCoord.row - CenterRow; int offsetColumn = tileCoord.column - CenterColumn; Vector3 pos = centerPos + new Vector3(offsetColumn, 0, offsetRow) * tileSize * tileMeshSize; return(pos); }
internal static GroundTile GetTileByRowColumn(TileCoord tileCoord) { tileCoord.row = tileCoord.row % 3; tileCoord.column = tileCoord.column % 3; if (tileCoord.row < 0) { tileCoord.row += 3; } if (tileCoord.column < 0) { tileCoord.column += 3; } return(tileArr[tileCoord.row, tileCoord.column]); }
internal static GroundTile GetTileByPos(Vector3 pos) { float minDst = float.MaxValue; TileCoord tilePos = new TileCoord(); foreach (GroundTile tile in tileArr) { Transform tempTileTrans = tile.gobj.transform; float dst = Mathf.Pow(tempTileTrans.position.x - pos.x, 2) + Mathf.Pow(tempTileTrans.position.z - pos.z, 2); if (dst > minDst) { continue; } minDst = dst; tilePos = tile.tileCoord; } return(tileArr[tilePos.row, tilePos.column]); }
internal static void GetRowColumnByIndex(int index, out TileCoord tileCoord) { tileCoord = new TileCoord(); tileCoord.row = index / 3; tileCoord.column = Mathf.Max(0, index - tileCoord.row * 3); }