Example #1
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)
     {
     }
 }
Example #2
0
 public override void handleUpdate(List<PackageUpdate> updates)
 {
     IEnumerable<PackageUpdate> relevantUpdates = updates.Where(x => x.change != PackageChange.Import &&
                                                                     x.change != PackageChange.ImportAdd &&
                                                                     x.change != PackageChange.Names);
     List<int> updatedExports = relevantUpdates.Select(x => x.index).ToList();
     if (skm != null && updatedExports.Contains(skm.MyIndex))
     {
         int index = skm.MyIndex;
         //loaded SkeletalMesh is no longer a SkeletalMesh
         if (pcc.getExport(index).ClassName != "SkeletalMesh")
         {
             skm = null;
             skmold = null;
             Preview3D.SkelMesh = null;
             treeView1.Nodes.Clear();
             hb1.ByteProvider = new DynamicByteProvider(new List<byte>());
             RefreshMeshList();
         }
         else
         {
             LoadSkeletalMesh(index);
         }
         updatedExports.Remove(index);
     }
     else if (stm != null && updatedExports.Contains(stm.index))
     {
         int index = stm.index;
         //loaded SkeletalMesh is no longer a SkeletalMesh
         if (pcc.getExport(index).ClassName != "StaticMesh")
         {
             stm = null;
             Preview3D.StatMesh = null;
             treeView1.Nodes.Clear();
             hb1.ByteProvider = new DynamicByteProvider(new List<byte>());
             RefreshMeshList();
         }
         else
         {
             LoadStaticMesh(index);
         }
         updatedExports.Remove(index);
     }
     if (updatedExports.Intersect(Materials).Count() > 0)
     {
         RefreshMaterialList();
     }
     else
     {
         foreach (var i in updatedExports)
         {
             string className = pcc.getExport(i).ClassName;
             if (className == "MaterialInstanceConstant" || className == "Material")
             {
                 RefreshMaterialList();
                 break;
             }
         }
     }
     if (updatedExports.Intersect(Objects).Count() > 0)
     {
         RefreshMeshList();
     }
     else
     {
         foreach (var i in updatedExports)
         {
             string className = pcc.getExport(i).ClassName;
             if (className == "SkeletalMesh" || className == "StaticMesh")
             {
                 RefreshMeshList();
                 break;
             }
         }
     }
 }
Example #3
0
 private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
 {
     int n = listBox1.SelectedIndex;
     if (n == -1)
         return;
     lODToolStripMenuItem.Visible = false;
     UnCheckLODs();
     stm = null;
     skm = null;
     skmold = null;
     Preview3D.SkelMesh = null;
     Preview3D.StatMesh = null;
     if (pcc.Exports[Objects[n].index].ClassName == "StaticMesh")
         LoadStaticMesh(Objects[n].index);
     if (pcc.Exports[Objects[n].index].ClassName == "SkeletalMesh")
         LoadSkeletalMesh(Objects[n].index);
 }
Example #4
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;
     }
 }