Ejemplo n.º 1
0
        public void Preview()
        {
            int n = listBox1.SelectedIndex;

            if (n == -1)
            {
                return;
            }
            int idx = objects[n];

            hb1.ByteProvider = new DynamicByteProvider(udk.Exports[idx].data);
            treeView1.Nodes.Clear();
            if (udk.GetClass(udk.Exports[idx].clas) == "SkeletalMesh")
            {
                STM = null;
                SKM = new SkeletalMesh(udk, idx);
                treeView1.Nodes.Add(SKM.ToTree());
            }
            if (udk.GetClass(udk.Exports[idx].clas) == "StaticMesh")
            {
                SKM = null;
                STM = new StaticMesh(udk, idx);
                treeView1.Nodes.Add(STM.ToTree());
            }
        }
Ejemplo n.º 2
0
 public void LoadSkeletalMesh(int index)
 {
     try
     {
         DisableLODs();
         skm                   = new SkeletalMesh(pcc, index);
         skmold                = new SkeletalMeshOld(pcc, pcc.Exports[index].Data);
         hb1.ByteProvider      = new DynamicByteProvider(pcc.Exports[index].Data);
         Preview3D.StatMesh    = null;
         Preview3D.SkelMesh    = skm;
         Preview3D.CamDistance = skm.Bounding.r * 2.0f;
         Preview3D.CamOffset   = skm.Bounding.origin;
         treeView1.Nodes.Clear();
         treeView1.Nodes.Add(skm.ToTree());
         treeView1.Nodes[0].Expand();
         lODToolStripMenuItem.Visible  = true;
         lOD1ToolStripMenuItem.Enabled = true;
         lOD1ToolStripMenuItem.Checked = true;
         if (skm.LODModels.Count > 1)
         {
             lOD2ToolStripMenuItem.Enabled = true;
         }
         if (skm.LODModels.Count > 2)
         {
             lOD3ToolStripMenuItem.Enabled = true;
         }
         if (skm.LODModels.Count > 3)
         {
             lOD4ToolStripMenuItem.Enabled = true;
         }
     }
     catch (Exception)
     {
     }
 }
Ejemplo n.º 3
0
        public void LoadSkeletalMesh(int index)
        {
            DisableLODs();
            UnCheckLODs();
            skm    = new SkeletalMesh(pcc, index);
            skmold = new SkeletalMeshOld(pcc, index);

            // Load preview model
            preview?.Dispose();
            preview = new ModelPreview(view.Device, skm, view.TextureCache);
            RefreshChosenMaterialsList();
            CenterView();

            // Update treeview
            treeView1.BeginUpdate();
            treeView1.Nodes.Clear();
            treeView1.Nodes.Add(skm.ToTree());
            treeView1.Nodes[0].Expand();
            treeView1.EndUpdate();
            lODToolStripMenuItem.Visible  = true;
            lOD0ToolStripMenuItem.Enabled = true;
            lOD0ToolStripMenuItem.Checked = true;
            if (skm.LODModels.Count > 1)
            {
                lOD1ToolStripMenuItem.Enabled = true;
            }
            if (skm.LODModels.Count > 2)
            {
                lOD2ToolStripMenuItem.Enabled = true;
            }
            if (skm.LODModels.Count > 3)
            {
                lOD3ToolStripMenuItem.Enabled = true;
            }
            MaterialBox.Visible              = false;
            MaterialApplyButton.Visible      = false;
            MaterialIndexBox.Visible         = false;
            MaterialIndexApplyButton.Visible = false;
        }
Ejemplo n.º 4
0
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode t = treeView1.SelectedNode;

            if (DisplayStyle == 0)
            {
                if (t.Parent == null || t.Name == "")
                {
                    return;
                }
                preview?.Dispose();
                preview = null;
                try
                {
                    if (int.TryParse(t.Name, out int i))
                    {
                        EntryStruct en = Entries[i];
                        if (!en.isDLC)
                        {
                            using (ME3Package pcc = MEPackageHandler.OpenME3Package(ME3Directory.cookedPath + en.Filename))
                            {
                                if (en.isSkeletal)
                                {
                                    SkeletalMesh skmesh = new SkeletalMesh(pcc, en.Index); // TODO: pass device
                                    preview = new ModelPreview(view.Device, skmesh, view.TextureCache);
                                    CenterView();
                                    treeView2.Nodes.Clear();
                                    if (previewWithTreeToolStripMenuItem.Checked)
                                    {
                                        treeView2.Visible = false;
                                        Application.DoEvents();
                                        treeView2.Nodes.Add(skmesh.ToTree());
                                        treeView2.Visible = true;
                                    }
                                }
                                else
                                {
                                }
                            }
                        }
                        else
                        {
                            string loc    = Path.GetDirectoryName(Application.ExecutablePath) + "\\exec\\";
                            string dirDLC = ME3Directory.DLCPath;
                            dirDLC += en.DLCName;
                            dirDLC += "\\CookedPCConsole\\Default.sfar";
                            DLCUnpack dlc = new DLCUnpack(dirDLC);
                            foreach (DLCUnpack.DLCEntry file in dlc.filesList)
                            {
                                try
                                {
                                    string filename = Path.GetFileName(file.filenamePath);
                                    if (Path.GetExtension(filename).ToLower().EndsWith(".pcc") && filename == en.Filename)
                                    {
                                        using (Stream input = File.OpenRead(dirDLC), output = File.Create(loc + filename))
                                        {
                                            dlc.ExtractEntry(file, input, output);
                                        }
                                        if (File.Exists(loc + filename))
                                        {
                                            try
                                            {
                                                if (en.isSkeletal)
                                                {
                                                    using (ME3Package pcc = MEPackageHandler.OpenME3Package(loc + filename))
                                                    {
                                                        SkeletalMesh skmesh = new SkeletalMesh(pcc, en.Index);
                                                        CenterView();
                                                        treeView2.Nodes.Clear();
                                                        if (previewWithTreeToolStripMenuItem.Checked)
                                                        {
                                                            treeView2.Visible = false;
                                                            Application.DoEvents();
                                                            treeView2.Nodes.Add(skmesh.ToTree());
                                                            treeView2.Visible = true;
                                                        }
                                                    }
                                                }
                                            }
                                            catch (Exception)
                                            {
                                            }
                                            File.Delete(loc + filename);
                                        }
                                    }
                                }
                                catch (Exception)
                                {
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
Ejemplo n.º 5
0
 public void LoadSkeletalMesh(int index)
 {
     try
     {
         DisableLODs();
         UnCheckLODs();
         skm              = new SkeletalMesh(pcc as ME3Package, index);
         skmold           = new SkeletalMeshOld(pcc as ME3Package, index);
         hb1.ByteProvider = new DynamicByteProvider(pcc.Exports[index].Data);
         bool foundTex = false;
         try
         {
             for (int i = 0; i < skm.MatInsts.Count; i++)
             {
                 for (int j = 0; j < skm.MatInsts[i].Textures.Count; j++)
                 {
                     if (skm.MatInsts[i].Textures[j].Desc.Contains("Diffuse"))
                     {
                         Preview3D.setTex(skm.MatInsts[i].Textures[j].Texture);
                         foundTex = true;
                         break;
                     }
                 }
             }
         }
         catch
         {
         }
         if (!foundTex)
         {
             Preview3D.setTex();
         }
         Preview3D.StatMesh    = null;
         Preview3D.SkelMesh    = skm;
         Preview3D.CamDistance = skm.Bounding.r * 2.0f;
         Preview3D.CamOffset   = skm.Bounding.origin;
         treeView1.BeginUpdate();
         treeView1.Nodes.Clear();
         treeView1.Nodes.Add(skm.ToTree());
         treeView1.Nodes[0].Expand();
         treeView1.EndUpdate();
         lODToolStripMenuItem.Visible  = true;
         lOD0ToolStripMenuItem.Enabled = true;
         lOD0ToolStripMenuItem.Checked = true;
         if (skm.LODModels.Count > 1)
         {
             lOD1ToolStripMenuItem.Enabled = true;
         }
         if (skm.LODModels.Count > 2)
         {
             lOD2ToolStripMenuItem.Enabled = true;
         }
         if (skm.LODModels.Count > 3)
         {
             lOD3ToolStripMenuItem.Enabled = true;
         }
     }
     catch
     {
         return;
     }
 }