private void extractMeshBtn_Click(object sender, EventArgs e) { previewWindow1.TransvoxelManager.Chunks = new System.Collections.Concurrent.ConcurrentDictionary <Vector3, TransvoxelHelpers.Chunk>(); previewWindow1.TransvoxelManager.SurfaceExtractor.UseCache = previewWindow1.Settings.ReuseVert; previewWindow1.TransvoxelManager.VolumeData.ChunkSize = previewWindow1.Settings.ChunkSize; _logger.Log("MAIN", "Extracting Mesh..."); new Thread( () => { //Thread.CurrentThread.IsBackground = true; TransvoxelManager tvm = previewWindow1.TransvoxelManager; HashedVolume <sbyte> v = (HashedVolume <sbyte>)tvm.VolumeData; foreach (WorldChunk <sbyte> c in v.data.Values) { tvm.ExtractMesh(c); } _logger.Log("MAIN", "Mesh Extraction Complete."); } ).Start(); }
protected override void Initialize() { _logger = Logger.GetLogger(); _logSender = "PreviewWindow"; _logger.Log(_logSender, "Initializing..."); _cam = new Camera(GraphicsDevice); _cam.currentCameraMode = Camera.CameraMode.free; _cam.ResetCamera(); _cam.SetFreeCamPosition(new Vector3(64, 50, 150)); _tvm = new TransvoxelManager(GraphicsDevice); // Create our effect. _effect = new BasicEffect(GraphicsDevice); mBoundingBoxEffect = new BasicEffect(GraphicsDevice); mBoundingBoxEffect.LightingEnabled = false; mBoundingBoxEffect.VertexColorEnabled = true; _effect.VertexColorEnabled = true; // Start the animation timer. timer = Stopwatch.StartNew(); // Hook the idle event to constantly redraw our animation. Application.Idle += delegate { Invalidate(); }; _logger.Log(_logSender, "Initialization Complete."); updateTimer = new System.Timers.Timer(1 / 30f); updateTimer.AutoReset = true; updateTimer.Elapsed += Update; updateTimer.Start(); verts = new VertexPositionColor[24]; }