public static List <Property> getPropList(PCCObject pcc, PCCObject.ExportEntry export) { Application.DoEvents(); int start = detectStart(pcc, export.Data, export.ObjectFlags); return(ReadProp(pcc, export.Data, start)); }
public PCCObject.ExportEntry CopyExport(PCCObject.ExportEntry exp) { PCCObject.ExportEntry ret = new PCCObject.ExportEntry(pcc, exp.Data, exp.offset); //ret.childs = exp.childs; //ret.ClassName = exp.ClassName; //ret.Data = CopyArray(exp.Data); //ret.DataSize = exp.DataSize; //ret.Link = exp.Link; //ret.ObjectName = exp.ObjectName; //ret.off = exp.off; //ret.raw = CopyArray(exp.raw); return ret; }
public void addExport(PCCObject.ExportEntry exportEntry) { if (exportEntry.pccRef != this) { throw new Exception("you cannot add a new export entry from another pcc file, it has invalid references!"); } exportEntry.hasChanged = true; //changing data offset in order to append it at the end of the file ExportEntry lastExport = Exports.Find(export => export.DataOffset == Exports.Max(entry => entry.DataOffset)); int lastOffset = lastExport.DataOffset + lastExport.Data.Length; exportEntry.DataOffset = lastOffset; Exports.Add(exportEntry); }
private void button7_Click(object sender, EventArgs e) { PCCObject.ExportEntry entry = new PCCObject.ExportEntry(); PCCObject.ExportEntry source = pcc.Exports[ObjectIndex]; byte[] Header = new byte[source.info.Length]; //Header for (int i = 0; i < source.info.Length; i++) Header[i] = source.info[i]; entry.pccRef = pcc; entry.info = Header; if (radioButton2.Checked) //Name from list if (comboBox1.SelectedIndex != -1) entry.idxObjectName = comboBox1.SelectedIndex; if (radioButton3.Checked) //Custom Name if(textBox1.Text != "") { pcc.Names.Add(textBox1.Text); entry.idxObjectName = pcc.Names.Count - 1; } if (radioButton4.Checked) //Class if (comboBox2.SelectedIndex != -1) entry.idxClassName = Classes[comboBox2.SelectedIndex]; if (radioButton8.Checked) //Link if (treeView1.SelectedNode != null) { string link = treeView1.SelectedNode.Name; entry.idxLink = Convert.ToInt32(link); } byte[] Data = new byte[0]; if (radioButton6.Checked) //Load data from file... if (File.Exists(textBox2.Text)) { FileStream fs = new FileStream(textBox2.Text, FileMode.Open, FileAccess.Read); Data = new byte[fs.Length]; for (int i = 0; i < fs.Length; i++) Data[i] = (byte)fs.ReadByte(); fs.Close(); } if (radioButton7.Checked) //...or keep old data { Data = new byte[source.Data.Length]; for (int i = 0; i < source.Data.Length; i++) Data[i] = source.Data[i]; } entry.Data = Data; int lastoffset = 0; foreach (PCCObject.ExportEntry ent in pcc.Exports) if (ent.DataOffset > lastoffset) lastoffset = ent.DataOffset + ent.Data.Length; entry.DataOffset = lastoffset; //entry.DataSize = -1;//force update pcc.addExport(entry); foreach (PCCObject.ExportEntry ex in pcc.Exports) //silly update trick, but it works... wv ex.Data = ex.Data; refForm.RefreshView(); this.Close(); }