private void SetupPalettes() { PaletteManager Manager = PaletteManager.Instance(); Manager.Reload(); Manager.AutoConfig(_World != null ? _World.Path : "", _SelectedRenderer.RendererName); dgPalettes.Rows.Clear(); foreach (PaletteFile File in Manager.AllPalettes) { DataGridViewRow Row = dgPalettes.Rows[dgPalettes.Rows.Add(File.Selected, File.Name, File.Version)]; Row.Tag = File; if (File.Version != String.Empty) { Row.Cells[1].ToolTipText = string.Format("{0} v{1} by {2}\r\n{3}", File.Name, File.Version, File.Author, File.Description); } else { Row.Cells[1].ToolTipText = string.Format("{0} by {1}\r\n{2}", File.Name, File.Author, File.Description); } } if (chkTrackChanges.Checked && _PaletteWatcher == null) { // ReSharper disable once AssignNullToNotNullAttribute // *** Safe to assume the EXE file isn't going to have a NULL path. _PaletteWatcher = new FileSystemWatcher(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) { EnableRaisingEvents = true, IncludeSubdirectories = true, Filter = "*.pal", NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.DirectoryName }; _PaletteWatcher.Changed += PaletteFilesUpdated; } }
private void btnCopyCLI_Click(object Sender, EventArgs E) { StringBuilder SB = new StringBuilder(); fbOpenFolder.Description = "Select output folder"; fbOpenFolder.ShowDialog(this); SB.Append("SeeSharp"); SB.Append(" --world \"" + _World.Path + "\""); SB.Append(" --dimension \"" + ((DimensionListEntry)cbDimension.SelectedItem).Value + "\""); SB.Append(" --output \"" + fbOpenFolder.SelectedPath + Path.DirectorySeparatorChar + "map.png\""); SB.Append(" --light-level " + tbLightLevel.Value.ToString()); SB.Append(" --render-core " + ((RendererListEntry)cbRenderer.SelectedItem).RendererName); if (_CachedConfigForm != null) { List <KeyValuePair <String, String> > L = _CachedConfigForm.ConfigStrings; foreach (KeyValuePair <String, String> ConfigPair in L) { SB.Append(" --render-option " + ConfigPair.Key + " \"" + ConfigPair.Value + "\""); } } if (cbCropMap.Checked) { SB.Append(" --subregion"); SB.Append(" --subregion-min-x " + nudXMin.Value.ToString(Thread.CurrentThread.CurrentCulture)); SB.Append(" --subregion-min-z " + nudZMin.Value.ToString(Thread.CurrentThread.CurrentCulture)); SB.Append(" --subregion-max-x " + nudXMax.Value.ToString(Thread.CurrentThread.CurrentCulture)); SB.Append(" --subregion-max-z " + nudZMax.Value.ToString(Thread.CurrentThread.CurrentCulture)); } if (nudThreads.Value != 1) { SB.Append(" --multi-thread --max-threads " + nudThreads.Value.ToString(Thread.CurrentThread.CurrentCulture)); } foreach (PaletteFile Palette in PaletteManager.Instance().AllPalettes.Where(x => x.Selected)) { SB.Append(" --palette " + Palette.PalettePath.ConvertToRelativePath()); } SB.Append(""); Clipboard.SetText(SB.ToString()); SetStatus("Copied to Clipboard"); }
internal FrmMain() { InitializeComponent(); // *** Why is this here? nudZMin.ValueChanged += SetupSubregion; nudXMin.ValueChanged += SetupSubregion; nudZMax.ValueChanged += SetupSubregion; nudXMax.ValueChanged += SetupSubregion; _InvokableControlToggler = ToggleControls; _InvokablePaletteSelector = UpdatePaletteSelection; PaletteManager.Instance(); }
private void Render(bool IsPreview) { _Abort = false; ToggleControls(!IsPreview, true, IsPreview); SetStatus("Initializing..."); IRenderer Renderer = null; // *** Set up renderer config _RenderingConfig.IsPreview = IsPreview; _RenderingConfig.Chunks = _World.GetChunkManager(_RenderingConfig.Dimension); _RenderingConfig.Palette = new BlockPalette(); _RenderingConfig.RenderSubregion = cbCropMap.Checked; _RenderingConfig.MaxThreads = cbMultithread.Checked ? (int)nudThreads.Value : 1; // ReSharper disable once InconsistentlySynchronizedField // *** This section of code is run before the parallel processing begins, so there is no danger of sync issues. _SkipErrors.Clear(); if (IsPreview) { _RenderingConfig.RenderSubregion = true; _RenderingConfig.SubregionChunks = new Rectangle(-15, -15, 31, 31); } else if (_RenderingConfig.RenderSubregion) { _RenderingConfig.SubregionChunks = new Rectangle((int)nudXMin.Value, (int)nudZMin.Value, (int)nudXMax.Value - (int)nudXMin.Value + 1, (int)nudZMax.Value - (int)nudZMin.Value + 1); } else { _RenderingConfig.SubregionChunks = new Rectangle(_RenderingConfig.Metrics.MinX, _RenderingConfig.Metrics.MinZ, _RenderingConfig.Metrics.MaxX - _RenderingConfig.Metrics.MinX, _RenderingConfig.Metrics.MaxZ - _RenderingConfig.Metrics.MinZ); } if (_Abort) { goto Cleanup; } foreach (DataGridViewRow Row in dgPalettes.Rows) { ((PaletteFile)Row.Tag).Selected = (bool)Row.Cells[0].Value; } // *** Set up palettes foreach (String Palette in from PaletteFile File in PaletteManager.Instance().AllPalettes where File.Selected select File.PalettePath) { try { _RenderingConfig.Palette.LoadPalette(Palette); } catch (BlockPalette.PaletteExecutionException Ex) { MessageBox.Show(string.Format("The palette file {0} is invalid and will be skipped:\r\n{1}", Path.GetFileName(Palette), Ex.Message), "Palette Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); PaletteManager.Instance().AllPalettes.First(x => x.PalettePath == Palette).Selected = false; } } if (_Abort) { goto Cleanup; } UpdatePaletteSelection(); _RenderingConfig.Palette.AssembleLookupTables(); // *** Initialize renderer Renderer = RendererManager.Instance().InstantiateRenderer((_SelectedRenderer).RendererName); Renderer.ProgressUpdate += DoUpdate; Renderer.RenderError += HandleError; Renderer.Configure(_RenderingConfig); Renderer.Initialize(); _AbortRender = Renderer.Abort; // *** Render if (IsPreview) { pbPreview.Image = Renderer.Preview(); } else { Renderer.Render(); } Cleanup: // *** Clean up if (Renderer != null) { Renderer.ProgressUpdate -= DoUpdate; Renderer.RenderError -= HandleError; } ToggleControls(false, _World != null, false); SetStatus(_Abort ? "Aborted" : "Finished", "Render " + (_Abort ? "Aborted" : "Finished")); SetProgress(0); _AbortRender = null; _Abort = false; }