public void CalculateTileProperties()
        {
            //Set tile properties to the same size as the map.
            TileProperties = new DenseArray <TileProperties>(Width, Height);

            //For each item
            var properties = ObjectGroups["TileProperties"];

            foreach (var tiledObject in properties)
            {
                //Create a new item.
                var tileProperties = new TileProperties();

                //Parse properties
                tileProperties = tiledObject.Properties
                                 .Aggregate(tileProperties, (current, tiledObjectProperty) =>
                                            TilePropertyMap[tiledObjectProperty.Key].Invoke(tiledObjectProperty.Value, current));

                //find prositon and store.
                var pos = Isometric.WorldToIsometric(tiledObject.WorldPosition, this);
                TileProperties[(int)pos.X, (int)pos.Y] = tileProperties;
            }
        }