Пример #1
0
        /// <summary>
        /// Return the world position equivalent to a grid position.
        /// </summary>
        public Vector2 GetWorldPosition(int x, int y, CellWorldPositionType cellWorldPositionType = CellWorldPositionType.Corner)
        {
            if (cellWorldPositionType == CellWorldPositionType.Corner)
            {
                return(new Vector2(x * CellSize, y * CellSize) + OriginPosition.ToVector2());
            }
            else // CellWorldPositionType.Center
            {
                float   centerBiasX = Width % 2 == 0 ? CellSize / 2 : 0;
                float   centerBiasY = Height % 2 == 0 ? CellSize / 2 : 0;
                Vector2 centerBias  = new Vector2(centerBiasX, centerBiasY);

                return(new Vector2(x * CellSize, y * CellSize) + OriginPosition.ToVector2() + centerBias);
            }
        }
Пример #2
0
        /// <summary>
        /// Return the equivalent grid position from a world position. (Not necesseraily valid).
        /// </summary>
        /// <param name="worldPosition"></param>
        /// <returns></returns>
        public int2 GetGridPosition(Vector2 worldPosition, CellWorldPositionType cellWorldPositionType = CellWorldPositionType.Corner)
        {
            if (cellWorldPositionType == CellWorldPositionType.Corner)
            {
                return(new int2(Mathf.RoundToInt((worldPosition.x - OriginPosition[0]) / CellSize), Mathf.RoundToInt((worldPosition.y - OriginPosition[1]) / CellSize)));
            }
            else // CellWorldPositionType.Center
            {
                float centerBiasX = Width % 2 == 0 ? CellSize / 2 : 0;
                float centerBiasY = Height % 2 == 0 ? CellSize / 2 : 0;

                return(new int2(Mathf.RoundToInt((worldPosition.x - OriginPosition[0] - centerBiasX) / CellSize),
                                Mathf.RoundToInt((worldPosition.y - OriginPosition[1] - centerBiasY) / CellSize)));
            }
        }
Пример #3
0
 /// <summary>
 /// Return the world position equivalent to a grid position.
 /// </summary>
 public Vector2 GetWorldPosition(int2 gridPosition, CellWorldPositionType cellWorldPositionType = CellWorldPositionType.Corner)
 {
     return(GetWorldPosition(gridPosition.x, gridPosition.y, cellWorldPositionType));
 }