private void removeReference_Click(object sender, EventArgs e) { MeshTextureObject selectedObject = (MeshTextureObject)this.treeListView1.SelectedObject; UnitVariantObject parent = (UnitVariantObject)this.treeListView1.GetParent(this.treeListView1.SelectedObject); parent.RemoveMesh(selectedObject); this.treeListView1.RemoveObject(this.treeListView1.SelectedObject); this.treeListView1.RefreshObjects(this.EditedFile.UnitVariantObjects); this.DataChanged = true; this.Refresh(); }
public UnitVariantFileEditorControl() : base(UnitVariantCodec.Instance) { this.DataChanged = false; this.components = null; this.InitializeComponent(); this.treeListView1.CanExpandGetter = x => (x is UnitVariantObject) && (((UnitVariantObject)x).EntryCount != 0); this.treeListView1.ChildrenGetter = delegate(object x) { UnitVariantObject obj2 = (UnitVariantObject)x; ArrayList list = new ArrayList(); list.AddRange(obj2.MeshTextureList); return(list); }; this.treeListView1.CellEditFinishing += new CellEditEventHandler(this.treeListView1_CellEditFinishing); }
private void addReference_Click(object sender, EventArgs e) { UnitVariantObject entry = null; if (this.treeListView1.SelectedObject is MeshTextureObject) { entry = (UnitVariantObject)this.treeListView1.GetParent(this.treeListView1.SelectedObject); } else { entry = (UnitVariantObject)this.treeListView1.SelectedObject; } MeshTextureObject mTO = new MeshTextureObject("NEW_ENTRY", "NEW_ENTRY", false, false); entry.AddMesh(mTO); this.treeListView1.RefreshObjects(this.EditedFile.UnitVariantObjects); this.DataChanged = true; this.Refresh(); }
private void removeModelPart_Click(object sender, EventArgs e) { UnitVariantObject parent = new UnitVariantObject(); if (this.treeListView1.SelectedObject is MeshTextureObject) { parent = (UnitVariantObject)this.treeListView1.GetParent(this.treeListView1.SelectedObject); } else { parent = (UnitVariantObject)this.treeListView1.SelectedObject; } this.EditedFile.RemoveUVO(parent); this.treeListView1.RemoveObject(this.treeListView1.SelectedObject); this.treeListView1.RefreshObjects(this.EditedFile.UnitVariantObjects); this.richTextBox6.Text = this.EditedFile.NumEntries.ToString(); this.DataChanged = true; this.Refresh(); }
private static UnitVariantObject ReadObject(BinaryReader reader) { string modelName = IOFunctions.ReadZeroTerminatedUnicode(reader); // ignore index reader.ReadUInt32(); uint num2 = reader.ReadUInt32(); uint entries = reader.ReadUInt32(); // ignore mesh start reader.ReadUInt32(); UnitVariantObject item = new UnitVariantObject { ModelPart = modelName, Num2 = num2, StoredEntryCount = entries }; return(item); }
// read from file public UnitVariantFile Decode(Stream stream) { UnitVariantFile file = new UnitVariantFile(); using (BinaryReader reader = new BinaryReader(stream)) { byte[] buffer = reader.ReadBytes(4); if ((((buffer[0] != 0x56) || (buffer[1] != 0x52)) || (buffer[2] != 0x4e)) || (buffer[3] != 0x54)) { throw new FileLoadException("Illegal unit_variant file: Does not start with 'VRNT'"); } file.Version = reader.ReadUInt32(); int entries = (int)reader.ReadUInt32(); file.Unknown1 = reader.ReadUInt32(); byte[] buffer3 = reader.ReadBytes(4); file.B1 = buffer3[0]; file.B2 = buffer3[1]; file.B3 = buffer3[2]; file.B4 = buffer3[3]; file.Unknown2 = BitConverter.ToUInt32(buffer3, 0); if (file.Version == 2) { file.Unknown3 = reader.ReadInt32(); } file.UnitVariantObjects = new List <UnitVariantObject>(entries); for (int i = 0; i < entries; i++) { UnitVariantObject item = ReadObject(reader); file.UnitVariantObjects.Add(item); } for (int j = 0; j < file.UnitVariantObjects.Count; j++) { for (int k = 0; k < file.UnitVariantObjects[j].StoredEntryCount; k++) { MeshTextureObject mto = ReadMTO(reader); file.UnitVariantObjects[j].MeshTextureList.Add(mto); } } } return(file); }
// write to stream public void Encode(Stream stream, UnitVariantFile file) { using (BinaryWriter writer = new BinaryWriter(stream)) { writer.Write("VRNT".ToCharArray(0, 4)); writer.Write(file.Version); writer.Write((uint)file.UnitVariantObjects.Count); writer.Write(file.Unknown1); writer.Write(file.Unknown2); if (file.Version == 2) { writer.Write(file.Unknown3); } // write all unit variant entries int mtoStartIndex = 0; for (int i = 0; i < file.UnitVariantObjects.Count; i++) { UnitVariantObject uvo = file.UnitVariantObjects[i]; IOFunctions.WriteZeroTerminatedUnicode(writer, uvo.ModelPart); writer.Write((uint)i); // index writer.Write(uvo.Num2); // always 0 afaict writer.Write(uvo.EntryCount); writer.Write(mtoStartIndex); mtoStartIndex += (int)uvo.EntryCount; } // write all meshes foreach (UnitVariantObject uvo in file.UnitVariantObjects) { foreach (MeshTextureObject mto in uvo.MeshTextureList) { IOFunctions.WriteZeroTerminatedUnicode(writer, mto.Mesh); IOFunctions.WriteZeroTerminatedUnicode(writer, mto.Texture); writer.Write(mto.Bool1); writer.Write(mto.Bool2); } } writer.Flush(); } }
private void insertModelPart_Click(object sender, EventArgs e) { UnitVariantObject entry = new UnitVariantObject(); UnitVariantObject parent = new UnitVariantObject(); if (this.treeListView1.SelectedObject is MeshTextureObject) { parent = (UnitVariantObject)this.treeListView1.GetParent(this.treeListView1.SelectedObject); } else { parent = (UnitVariantObject)this.treeListView1.SelectedObject; } entry.ModelPart = "NEW_ENTRY"; int insertIndex = EditedFile.UnitVariantObjects.IndexOf(parent) + 1; this.EditedFile.InsertUVO(entry, insertIndex); this.treeListView1.AddObject(entry); this.treeListView1.RefreshObjects(this.EditedFile.UnitVariantObjects); this.richTextBox6.Text = this.EditedFile.NumEntries.ToString(); this.DataChanged = true; this.Refresh(); }
private void exportTSV_Click(object sender, EventArgs e) { List <string> strings = new List <string>(); for (int i = 0; i < this.treeListView1.Items.Count; i++) { OLVListItem item = (OLVListItem)this.treeListView1.Items[i]; if (item.RowObject is UnitVariantObject) { UnitVariantObject rowObject = (UnitVariantObject)item.RowObject; strings.Add(rowObject.ModelPart.ToString() + "\t" + rowObject.Num2.ToString() + "\t" + rowObject.EntryCount.ToString() + "\t"); if (rowObject.MeshTextureList != null) { foreach (MeshTextureObject obj3 in rowObject.MeshTextureList) { strings.Add("\t\t\t\t\t" + obj3.Mesh + "\t" + obj3.Texture + "\t" + obj3.Bool1.ToString() + "\t" + obj3.Bool2.ToString()); } } } } WriteToTSVFile(strings); }