protected void generate_map_block(GameTime gameTime) { if ((map_block_loader_params_.time += gameTime.ElapsedGameTime.TotalSeconds) < 0.05) return; map_block_loader_params_.time = 0; map_block_loader_params_.h = map_image_data[map_block_loader_params_.z * map_image.Width + map_block_loader_params_.x].R * 0.025f; var p = new Vector3(map_block.floor_length * (float)map_block_loader_params_.x, 20, map_block.floor_length * -(float)map_block_loader_params_.z) { }; Debug.WriteLine("new block; position = " + p); var c = new map_block(Game, camera) { position = p, height = map_block_loader_params_.h }; c.Initialize(); components.Add(c); ++map_block_loader_params_.x; if (map_block_loader_params_.x >= map_image.Width) { ++map_block_loader_params_.z; map_block_loader_params_.x = 0; if (map_block_loader_params_.z >= map_image.Height) { on_update_first -= generate_map_block; return; } } }