Пример #1
0
        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();
        }
Пример #2
0
 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);
 }
Пример #3
0
        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();
        }
Пример #4
0
        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();
     }
 }
Пример #8
0
        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();
        }
Пример #9
0
        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);
        }