public override void Initialize(GraphicsDevice graphicsDevice, Camera camera, GetTimeOfDay getTimeOfDay, GetFogVector getFogVector) { base.Initialize(graphicsDevice, camera, getTimeOfDay, getFogVector); m_vertexBuilder = new VertexBuilder<CloudBlock>(m_clouds, CloudIndexByWorldPosition, m_graphicsDevice, Scale); //TODO: create general task pool (with priority) and put this in it. Task.Run(() => { while (true) { StepClouds(); foreach (var cloudVertexTarget in m_cloudVertexTargets) { m_vertexBuilder.Build(cloudVertexTarget); } Thread.Sleep(100); } // ReSharper disable once FunctionNeverReturns }); }