Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
0
        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;
        }