private DDSImage PreviewTexture(Kn5 kn5, Kn5Texture texture) { var data = kn5.TexturesData[texture.Filename]; var key = kn5.OriginalFilename + "/" + texture.Filename; if (!_textures.ContainsKey(key)) { try { _textures[key] = new DDSImage(data); } catch (Exception) { pictureBox.Image = null; return(null); } } var bitmap = _textures[key].Bitmap == null ? null : new Bitmap(_textures[key].Bitmap, new Size(512, 512)); pictureBox.Image = bitmap; return(_textures[key]); }
private void treeViewKn5_AfterSelect(object sender, TreeViewEventArgs e) { var selected = treeViewKn5.SelectedNode; _kn5 = GetKn5(selected); if (_kn5 != null) { Text = Path.GetFileName(_kn5.OriginalFilename) + " - " + _text; } else { Text = _text; } _material = null; _texture = null; var listMode = true; var materialMode = false; if (selected.Tag != null && _kn5 != null) { if (selected.Tag is Kn5Material) { listMode = false; materialMode = true; _material = (Kn5Material)selected.Tag; labelInfo.Text = "Name: " + _material.Name; Kn5Texture texture = null; foreach (var mapping in _material.TextureMappings) { texture = _kn5.Textures[mapping.Texture]; break; } if (texture == null) { pictureBox.Image = null; } else { PreviewTexture(_kn5, texture); } textBoxShaderName.Text = _material.ShaderName; comboBoxBlendMode.SelectedIndex = (int)_material.BlendMode; comboBoxDepthMode.SelectedIndex = (int)_material.DepthMode; checkBoxAlphaTested.Checked = _material.AlphaTested; dataGridViewProperties.Rows.Clear(); foreach (var property in _material.ShaderProperties) { dataGridViewProperties.Rows.Add(new object[] { property.Name, Convert.ToString(property.ValueA), String.Join(", ", property.ValueB), String.Join(", ", property.ValueC), String.Join(", ", property.ValueD) }); } dataGridViewTextureMappings.Rows.Clear(); foreach (var mapping in _material.TextureMappings) { dataGridViewTextureMappings.Rows.Add(new object[] { mapping.Name, mapping.Texture, Convert.ToString(mapping.Slot) }); } } else if (selected.Tag is Kn5Texture) { listMode = false; tableLayoutPanelMain.ColumnStyles[0].SizeType = SizeType.AutoSize; tableLayoutPanelMain.ColumnStyles[1].Width = 50; _texture = (Kn5Texture)selected.Tag; var dds = PreviewTexture(_kn5, _texture); labelInfo.Text = "Name: " + _texture.Name + "\r\n" + (dds == null || dds.Bitmap == null ? "Read failed" : "Size: " + dds.Bitmap.Width + "×" + dds.Bitmap.Height + "\r\n" + "Pixel format: " + dds.Format); } } ListMode = listMode; MaterialMode = materialMode; }