Beispiel #1
0
    public Vector2 GetPosition(ProjectedPosition pos)
    {
        pos.X -= _renderGrid.OffsetX;
        pos.Y -= _renderGrid.OffsetY;
        float x = (float)(pos.X + pos.LocalX) * UNITS_PER_TILE + _position.x;
        float y = -((float)(pos.Y + pos.LocalY) * UNITS_PER_TILE) + _position.y;

        return(new Vector2(x, y));
    }
Beispiel #2
0
    /// <summary>
    /// Inverse mapping equation to get geographical coordinates from Cartesian coordinates
    /// </summary>
    /// <param name="proj">Cartesian coordinates</param>
    /// <returns>Geographical Coordinates</returns>
    public static Vector2 ProjectionToGeographic(ProjectedPosition proj)
    {
        double tilesPerEdge = TilesPerEdge(proj.ZoomLevel);

        //Mercator Projection:
        double longitude = (proj.X * (360 / tilesPerEdge)) - 180;
        double latitude  = Mathf.Rad2Deg * (Math.Atan(Math.Sinh((1 - proj.Y * (2 / tilesPerEdge)) * Math.PI)));

        return(new Vector2((float)longitude, (float)latitude));
    }
Beispiel #3
0
    private void Initialize()
    {
        var dim = 2 * MapRadius + 1;

        InitCells(dim, dim);
        Width             = dim * UNITS_PER_TILE;
        Height            = dim * UNITS_PER_TILE;
        _spriteDictionary = new LRUSpriteDictionary((dim + 1) * (dim + 1));
        _renderGrid       = new RenderGrid(_cells.ToArray(), dim, dim);
        _loadedPosition   = new ProjectedPosition(MapRadius, MapRadius, ZoomLevel, 0, 0);
        _position         = new Vector3();
    }
Beispiel #4
0
 private void LoadNewTiles()
 {
     if (Equals(CurrentPosition, default(ProjectedPosition)))
     {
         return;
     }
     _renderGrid.Shift(_loadedPosition.X - CurrentPosition.X, _loadedPosition.Y - CurrentPosition.Y);
     _loadedPosition = CurrentPosition;
     for (int i = _loadedPosition.Y - MapRadius; i <= _loadedPosition.Y + MapRadius; i++)
     {
         for (int j = _loadedPosition.X - MapRadius; j <= _loadedPosition.X + MapRadius; j++)
         {
             if (_renderGrid[j, i] == null)
             {
                 _renderGrid[j, i] = SpawnTile(j, i);
             }
         }
     }
 }
Beispiel #5
0
    public static ProjectedPosition Lerp(ProjectedPosition from, ProjectedPosition to, float t)
    {
        Vector2 lerped = Vector2.Lerp(from, to, t);

        return(new ProjectedPosition(lerped.x, lerped.y, from.ZoomLevel));
    }