private void MaskImport_Click(object sender, RoutedEventArgs e) { UndertaleSprite sprite = this.DataContext as UndertaleSprite; UndertaleSprite.MaskEntry target = (sender as Button).DataContext as UndertaleSprite.MaskEntry; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { System.Drawing.Image img = System.Drawing.Image.FromFile(dlg.FileName); if ((sprite.Width != (uint)img.Width) || (sprite.Height != (uint)img.Height)) { throw new System.Exception(dlg.FileName + " is not the proper size to be imported! Please correct this before importing! The proper dimensions are width: " + sprite.Width.ToString() + " px, height: " + sprite.Height.ToString() + " px."); } target.Data = TextureWorker.ReadMaskData(dlg.FileName); } catch (Exception ex) { mainWindow.ShowError("Failed to import file: " + ex.Message, "Failed to import file"); } } }
private void Import_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedTexture target = DataContext as UndertaleEmbeddedTexture; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { Bitmap bmp; using (var ms = new MemoryStream(TextureWorker.ReadTextureBlob(dlg.FileName))) { bmp = new Bitmap(ms); } bmp.SetResolution(96.0F, 96.0F); using (var stream = new MemoryStream()) { bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png); target.TextureData.TextureBlob = stream.ToArray(); } } catch (Exception ex) { MessageBox.Show("Failed to import file: " + ex.Message, "Failed to import file", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void ExportAll_Click(object sender, RoutedEventArgs e) { UndertaleSprite sprite = this.DataContext as UndertaleSprite; SaveFileDialog dlg = new SaveFileDialog(); dlg.FileName = sprite.Name.Content + ".png"; dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; TextureWorker worker = new TextureWorker(); if (dlg.ShowDialog() == true) { try { if (sprite.Textures.Count > 1) { string dir = System.IO.Path.GetDirectoryName(dlg.FileName); string name = System.IO.Path.GetFileNameWithoutExtension(dlg.FileName); string path = System.IO.Path.Combine(dir, name); string ext = System.IO.Path.GetExtension(dlg.FileName); Directory.CreateDirectory(path); foreach (var tex in sprite.Textures.Select((tex, id) => new { id, tex })) { try { worker.ExportAsPNG(tex.tex.Texture, System.IO.Path.Combine(path, tex.id + ext)); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } } else if (sprite.Textures.Count == 1) { try { worker.ExportAsPNG(sprite.Textures[0].Texture, dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("No frames to export", "Failed to export sprite", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { MessageBox.Show("Failed to export: " + ex.Message, "Failed to export sprite", MessageBoxButton.OK, MessageBoxImage.Error); } } worker.Cleanup(); }
private void Import_Click(object sender, RoutedEventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (!(dlg.ShowDialog() ?? false)) { return; } try { Bitmap image = TextureWorker.ReadImageFromFile(dlg.FileName); image.SetResolution(96.0F, 96.0F); (this.DataContext as UndertaleTexturePageItem).ReplaceTexture(image); // Refresh the image of "ItemDisplay" if (ItemDisplay.FindName("RenderAreaBorder") is not Border border) { return; } if (border.Background is not ImageBrush brush) { return; } BindingOperations.GetBindingExpression(brush, ImageBrush.ImageSourceProperty)?.UpdateTarget(); } catch (Exception ex) { mainWindow.ShowError(ex.Message, "Failed to import image"); } }
// Start is called before the first frame update private void Start() { worker = new TextureWorker(32, 32) .Fill(Color.clear) .CreateRoundedBorders(Color.red, 5) .Apply(); circleWorker = new TextureWorker(32, 32) .SetBorders(Color.black, 1) .Fill(Color.red) .Apply(); }
private void InitProgram() { var a = _target - _camera; a.Y = 0; _moveFw = new Vector3(a); _moveFw.Normalize(); _moveFw = _moveFw / 5f; _moveSd = Vector3.Cross(a, _target - _camera); _moveSd.Normalize(); _moveSd = _moveSd / 4f; GL.GenVertexArrays(1, out _vertsArrObjHnd); GL.BindVertexArray(_vertsArrObjHnd); GL.ClearColor(0.15f, 0.25f, 0.25f, 1.0f); //GL.ClearColor(0, 0, 0, 1); _shaderVC = new ShaderVC("Shaders/v_c.glsl", "Shaders/f_c.glsl"); _shaderVT = new ShaderVT("Shaders/v_t.glsl", "Shaders/f_t.glsl"); _shaderVTL = new ShaderVTL("Shaders/v_t_l.glsl", "Shaders/f_t_l.glsl"); /* * _light = new Light(true) * { * Scale = new Vector3(1, 1, 1), * Position = new Vector3((1536/2)*Consts.XZ_SCALE,3, (1536 / 2) * Consts.XZ_SCALE), * PrimitiveType = PrimitiveType.Lines * }; * _colObjs.Add(_light);*/ _colObjs.Add(new Axes(5) { PrimitiveType = PrimitiveType.Lines, UseTextures = false }); for (int i = 0; i < _colObjs.Count; i++) { var obj = _colObjs[i]; obj.GenVC(); } _heightMap = new HeightMap("level\\terrain\\land_map.h32"); _miss = new MissionLoader("level\\mission_mission0.xml"); //_levelDataLdr = new LevelDataLoader("level\\leveldata.xml"); //_texHnd = TextureWorker.GetInstance().LoadBMPTexture("1.bmp"); _texHnd = TextureWorker.GetInstance().LoadDDSTexture("Textures/cover_low_000_PNG_DXT3_1.DDS"); GL.BindBuffer(BufferTarget.ArrayBuffer, 0); GC.Collect(); }
private void Import_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedTexture target = DataContext as UndertaleEmbeddedTexture; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { Bitmap bmp; using (var ms = new MemoryStream(TextureWorker.ReadTextureBlob(dlg.FileName))) { bmp = new Bitmap(ms); } bmp.SetResolution(96.0F, 96.0F); var width = (uint)bmp.Width; var height = (uint)bmp.Height; if ((width & (width - 1)) != 0 || (height & (height - 1)) != 0) { mainWindow.ShowWarning("WARNING: texture page dimensions are not powers of 2. Sprite blurring is very likely in game.", "Unexpected texture dimensions"); } using (var stream = new MemoryStream()) { bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png); target.TextureData.TextureBlob = stream.ToArray(); TexWidth.GetBindingExpression(TextBox.TextProperty)?.UpdateTarget(); TexHeight.GetBindingExpression(TextBox.TextProperty)?.UpdateTarget(); } } catch (Exception ex) { mainWindow.ShowError("Failed to import file: " + ex.Message, "Failed to import file"); } } }
private void MaskImport_Click(object sender, RoutedEventArgs e) { UndertaleSprite.MaskEntry target = (sender as Button).DataContext as UndertaleSprite.MaskEntry; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { target.Data = TextureWorker.ReadMaskData(dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to import file: " + ex.Message, "Failed to import file", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void Export_Click(object sender, RoutedEventArgs e) { SaveFileDialog dlg = new SaveFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { TextureWorker worker = new TextureWorker(); try { worker.ExportAsPNG((UndertaleTexturePageItem)this.DataContext, dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } worker.Cleanup(); } }
private void Import_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedTexture target = DataContext as UndertaleEmbeddedTexture; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { target.TextureData.TextureBlob = TextureWorker.ReadTextureBlob(dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to import file: " + ex.Message, "Failed to import file", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void MaskExport_Click(object sender, RoutedEventArgs e) { UndertaleSprite sprite = this.DataContext as UndertaleSprite; UndertaleSprite.MaskEntry target = (sender as Button).DataContext as UndertaleSprite.MaskEntry; SaveFileDialog dlg = new SaveFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { TextureWorker.ExportCollisionMaskPNG(sprite, target, dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void Import_Click(object sender, RoutedEventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (!(dlg.ShowDialog() ?? false)) { return; } try { Bitmap image = TextureWorker.ReadImageFromFile(dlg.FileName); image.SetResolution(96.0F, 96.0F); (this.DataContext as UndertaleTexturePageItem).ReplaceTexture(image); } catch (Exception ex) { MessageBox.Show(ex.Message, "Failed to import image", MessageBoxButton.OK, MessageBoxImage.Error); } }