Пример #1
0
        private void openPccToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog d = new OpenFileDialog();

            d.Filter = "*.u;*.upk;*sfm|*.u;*.upk;*sfm";
            if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                pcc         = new PCCObject(d.FileName);
                CurrentView = 2;
                classes     = new List <int>();
                foreach (PCCObject.ExportEntry ent in pcc.Exports)
                {
                    int f = -1;
                    for (int i = 0; i < classes.Count(); i++)
                    {
                        if (classes[i] == ent.ClassNameID)
                        {
                            f = i;
                        }
                    }
                    if (f == -1)
                    {
                        classes.Add(ent.ClassNameID);
                    }
                }
                bool run = true;
                while (run)
                {
                    run = false;
                    for (int i = 0; i < classes.Count() - 1; i++)
                    {
                        if (pcc.GetName(classes[i]).CompareTo(pcc.GetName(classes[i + 1])) > 0)
                        {
                            int t = classes[i];
                            classes[i]     = classes[i + 1];
                            classes[i + 1] = t;
                            run            = true;
                        }
                    }
                }
                RefreshView();
            }
        }
Пример #2
0
 private void openPccToolStripMenuItem_Click_1(object sender, EventArgs e)
 {
     OpenFileDialog d = new OpenFileDialog();
     d.Filter = "*.u;*.upk;*sfm|*.u;*.upk;*sfm";
     if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         pcc = new PCCObject(d.FileName);
         CurrList = 0;
         classes = new List<int>();
         foreach (PCCObject.ExportEntry ent in pcc.Exports)
         {
             int f = -1;
             for (int i = 0; i < classes.Count(); i++)
                 if (classes[i] == ent.ClassNameID)
                     f = i;
             if (f == -1)
                 classes.Add(ent.ClassNameID);
         }
         bool run = true;
         while (run)
         {
             run = false;
             for (int i = 0; i < classes.Count() - 1; i++)
                 if (pcc.GetName(classes[i]).CompareTo(pcc.GetName(classes[i + 1])) > 0)
                 {
                     int t = classes[i];
                     classes[i] = classes[i + 1];
                     classes[i + 1] = t;
                     run = true;
                 }
         }
         RefreshLists();
     }
 }
Пример #3
0
        private void addObjectsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (CurrentObjects == null)
            {
                return;
            }
            string result = Microsoft.VisualBasic.Interaction.InputBox("Please enter object index", "ME1Explorer");

            if (result == "")
            {
                return;
            }
            int i;

            if (int.TryParse(result, out i))
            {
                if (i < pcc.Exports.Count)
                {
                    if (!CurrentObjects.Contains(i))
                    {
                        byte[]      buff     = pcc.Exports[SequenceIndex].Data;
                        List <byte> ListBuff = new List <byte>(buff);
                        BitConverter.IsLittleEndian = true;
                        List <PropertyReader.Property> p = PropertyReader.getPropList(pcc, buff);
                        for (int j = 0; j < p.Count(); j++)
                        {
                            if (pcc.GetName(p[j].Name) == "SequenceObjects")
                            {
                                int    count     = BitConverter.ToInt32(p[j].raw, 24);
                                byte[] sizebuff  = BitConverter.GetBytes(BitConverter.ToInt32(p[j].raw, 16) + 4);
                                byte[] countbuff = BitConverter.GetBytes(count + 1);
                                for (int k = 0; k < 4; k++)
                                {
                                    ListBuff[p[j].offsetval - 8 + k] = sizebuff[k];
                                    ListBuff[p[j].offsetval + k]     = countbuff[k];
                                }
                                ListBuff.InsertRange(p[j].offsetval + 4 + count * 4, BitConverter.GetBytes(i + 1));
                                pcc.Exports[SequenceIndex].Data = ListBuff.ToArray();
                                SaveData s = new SaveData();
                                s.index = i;
                                s.X     = graphEditor.Camera.Bounds.X + graphEditor.Camera.Bounds.Width / 2;
                                s.Y     = graphEditor.Camera.Bounds.Y + graphEditor.Camera.Bounds.Height / 2;
                                List <SaveData> list = new List <SaveData>();
                                list.Add(s);
                                saveView(false, list);
                                LoadSequence(SequenceIndex, false);
                                break;
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show(i + " is already in the sequence.");
                    }
                }
                else
                {
                    MessageBox.Show(i + " is not in the export list.");
                }
            }
            else
            {
                MessageBox.Show(result + " is not an integer.");
            }
        }