Represents entire visible world.
Inheritance: System.DisposableBase
		/// <summary>
		/// Adds view layer.
		/// </summary>
		/// <param name="viewLayer"></param>
		public void AddLayer ( RenderLayer viewLayer )
		{
			lock (viewLayers) {
				viewLayers.Add( viewLayer );
			}
		}
		/// <summary>
		/// Removes layer.
		/// </summary>
		/// <param name="viewLayer"></param>
		/// <returns>True if element was removed. False if layer does not exist.</returns>
		public bool RemoveLayer ( RenderLayer viewLayer )
		{
			lock (viewLayers) {
				if (viewLayers.Contains(viewLayer)) {
					viewLayers.Remove( viewLayer );
					return true;
				}
			}

			return false;
		}
		/// <summary>
		/// 
		/// </summary>
		public override void Initialize ()
		{
			debugFont		=	Game.Content.Load<DiscTexture>("conchars");

			var bounds		=	Game.RenderSystem.DisplayBounds;
			masterView		=	Game.RenderSystem.RenderWorld;


			Game.RenderSystem.RemoveLayer(masterView);

			viewLayer = new RenderLayer(Game);
			Game.RenderSystem.AddLayer(viewLayer);

			//Game.RenderSystem.DisplayBoundsChanged += (s,e) => {
			//	masterView.Resize( Game.RenderSystem.DisplayBounds.Width, Game.RenderSystem.DisplayBounds.Height );
			//};

			targetTexture		=	new TargetTexture(Game.RenderSystem, bounds.Width, bounds.Height, TargetFormat.LowDynamicRange );

			testLayer	=	new SpriteLayer( Game.RenderSystem, 1024 );
			uiLayer		=	new SpriteLayer( Game.RenderSystem, 1024 );

			tiles = new TilesGisLayer(Game, viewLayer.GlobeCamera);
			viewLayer.GisLayers.Add(tiles);

			text = new TextGisLayer(Game, 100, viewLayer.GlobeCamera);
			//masterView.GisLayers.Add(text);

			//masterView.SpriteLayers.Add( testLayer );
			//masterView.SpriteLayers.Add( text.TextSpriteLayer );
			viewLayer.SpriteLayers.Add(console.ConsoleSpriteLayer);

			
			text.GeoTextArray[0] = new TextGisLayer.GeoText {
				Color	= Color.Red,
				Text	= "Arrow",
				LonLat	= DMathUtil.DegreesToRadians(new DVector2(30.306473, 59.944082))
			};

			text.GeoTextArray[1] = new TextGisLayer.GeoText {
				Color	= Color.Teal,
				Text	= "Park",
				LonLat	= DMathUtil.DegreesToRadians(new DVector2(30.313897, 59.954623))
			};

			Game.Keyboard.KeyDown += Keyboard_KeyDown;

			LoadContent();

			Game.Reloading += (s,e) => LoadContent();


			var r = new Random();

			//pointsCPU = new PointsGisLayerCPU(Game, 8000000);
			//pointsCPU.TextureAtlas = Game.Content.Load<Texture2D>("Zombie");
			//
			//for (int i = 0; i < pointsCPU.PointsCountToDraw; i++) {
			//	pointsCPU.AddPoint(i, DMathUtil.DegreesToRadians(new DVector2(30.240383 + r.NextDouble(-1, 1) * 0.1, 59.944007 - r.NextDouble(-1, 1) * 0.05)), 0, 0.01f);
			//}
			//pointsCPU.UpdatePointsBuffer();
			//viewLayer.GisLayers.Add(pointsCPU);
			

			pointsGPU = new PointsGisLayer(Game, 1677000, true);
			pointsGPU.TextureAtlas = Game.Content.Load<Texture2D>("Zombie");
			pointsGPU.ImageSizeInAtlas = new Vector2(36, 36);
			
			for (int i = 0; i < pointsGPU.PointsCountToDraw; i++) {
				var pos = DMathUtil.DegreesToRadians(new DVector2(30.240383 + r.NextDouble(-1, 1)*0.2, 59.944007 - r.NextDouble(-1, 1)*0.1));
				pointsGPU.PointsCpu[i] = new Gis.GeoPoint {
					Lon = pos.X,
					Lat = pos.Y,
					Color = Color4.White,
					Tex0 = new Vector4(0, 0, 0.02f, 0)
				};
			}
			pointsGPU.UpdatePointsBuffer();
			viewLayer.GisLayers.Add(pointsGPU);


			viewLayer.GlobeCamera.GoToPlace(GlobeCamera.Places.SaintPetersburg_VO);
			viewLayer.GlobeCamera.CameraDistance = GeoHelper.EarthRadius + 5;
		}