public void AddData(BLMAPLTEX l) { if (l != null) { Unknown1.Text = HexUtil.Hex32(l.Padding); Unknown2.Text = HexUtil.Hex32(l.Unknown); Unknown3.Text = HexUtil.Hex16(l.Unknown1); Texture.Text = l.Texture; Unknown4.Text = HexUtil.Hex32(l.Unknown2); Unknown5.Text = HexUtil.Hex32(l.Unknown3); Unknown6.Text = HexUtil.Hex32(l.Unknown4); Unknown7.Text = HexUtil.Hex32(l.Unknown5); Unknown8.Text = HexUtil.Hex32(l.Unknown6); Unknown9.Text = HexUtil.Hex32(l.Unknown7); Unknown10.Text = HexUtil.Hex32(l.Unknown8); Unknown11.Text = HexUtil.Hex32(l.Unknown9); } else { Unknown1.Text = ""; Unknown2.Text = ""; Unknown3.Text = ""; Texture.Text = ""; Unknown4.Text = ""; Unknown5.Text = ""; Unknown6.Text = ""; Unknown7.Text = ""; Unknown8.Text = ""; Unknown9.Text = ""; Unknown10.Text = ""; Unknown11.Text = ""; } }
public void WriteBLMAP(string FilePath) { FileName = FilePath; BigEndianWriter Writer = new BigEndianWriter(File.Open(FilePath, FileMode.Create)); BLMAP BLMAP = lmapComponent1.ReturnData(); Writer.WriteChars("LMAP".ToCharArray(), 0, 4); Writer.WriteUInt32(0); Writer.WriteUInt32(BLMAP.Unknown1); Writer.WriteUInt32(BLMAP.Unknown2); Writer.WriteUInt16(Convert.ToUInt16(treeView1.Nodes[0].Nodes[1].Nodes.Count)); Writer.WriteUInt16(BLMAP.Unknown3); Writer.WriteUInt32(BLMAP.Unknown4); Writer.WriteUInt32(BLMAP.Unknown5); Writer.WriteUInt32(BLMAP.Unknown6); int FileSize = 0x20; for (int i = 0; i < listLTEX.Count; i++) { BLMAPLTEX LTEX = ltexComponent1.ReturnData(); LTEX.Entries = ReturnLTEX(); listLTEX[SelectedNode] = LTEX; FileSize += 0x3C + listLTEX[i].Entries.Count * 8; Writer.WriteChars("LTEX".ToCharArray(), 0, 4); Writer.WriteInt32(0x3C + listLTEX[i].Entries.Count * 8); Writer.WriteUInt32(listLTEX[i].Padding); Writer.WriteUInt32(listLTEX[i].Unknown); Writer.WriteUInt16(Convert.ToUInt16(listLTEX[i].Entries.Count)); Writer.WriteUInt16(listLTEX[i].Unknown1); Writer.WriteChars(listLTEX[i].Texture.ToCharArray(), 0, 4); Writer.WriteUInt32(listLTEX[i].Unknown2); Writer.WriteUInt32(listLTEX[i].Unknown3); Writer.WriteUInt32(listLTEX[i].Unknown4); Writer.WriteUInt32(listLTEX[i].Unknown5); Writer.WriteUInt32(listLTEX[i].Unknown6); Writer.WriteUInt32(listLTEX[i].Unknown7); Writer.WriteUInt32(listLTEX[i].Unknown8); Writer.WriteUInt32(listLTEX[i].Unknown9); Writer.WriteInt32(listLTEX[i].Entries.Count * 8); for (int j = 0; j < listLTEX[i].Entries.Count; j++) { Writer.WriteSingle(listLTEX[i].Entries[j].Unknown1); Writer.WriteUInt32(listLTEX[i].Entries[j].Unknown2); } } Writer.BaseStream.Position = 4; Writer.WriteInt32(FileSize); Writer.Close(); treeView1.Nodes[0].Text = Path.GetFileName(FilePath); }
private void ImportLTEX_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog(); o.Filter = "Binary Light Texture (*bltex)|*.bltex"; if (o.ShowDialog() == DialogResult.OK) { BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(o.FileName))); BLMAPLTEX LTEX = new BLMAPLTEX(); LTEX.Magic = Reader.ReadASCII(4); if (LTEX.Magic != "LTEX") { throw new WrongMagicException(LTEX.Magic, "LTEX", Reader.BaseStream.Position - 4); } LTEX.SectionSize = Reader.ReadUInt32(); LTEX.Padding = Reader.ReadUInt32(); LTEX.Unknown = Reader.ReadUInt32(); LTEX.NrEntries = Reader.ReadUInt16(); LTEX.Unknown1 = Reader.ReadUInt16(); LTEX.Texture = Reader.ReadASCII(4); LTEX.Unknown2 = Reader.ReadUInt32(); LTEX.Unknown3 = Reader.ReadUInt32(); LTEX.Unknown4 = Reader.ReadUInt32(); LTEX.Unknown5 = Reader.ReadUInt32(); LTEX.Unknown6 = Reader.ReadUInt32(); LTEX.Unknown7 = Reader.ReadUInt32(); LTEX.Unknown8 = Reader.ReadUInt32(); LTEX.Unknown9 = Reader.ReadUInt32(); LTEX.EntriesSize = Reader.ReadUInt32(); LTEX.Entries = new List <Entry>(); for (int j = 0; j < LTEX.NrEntries; j++) { LTEX.Entries.Add(new Entry() { Unknown1 = Reader.ReadSingle(), Unknown2 = Reader.ReadUInt32() }); } listLTEX.Add(LTEX); treeView1.Nodes[0].Nodes[1].Nodes.Add("LTEX " + HexUtil.ConvertToHex(treeView1.Nodes[0].Nodes[1].Nodes.Count)); treeView1.Nodes[0].Nodes[1].Nodes[treeView1.Nodes[0].Nodes[1].Nodes.Count - 1].ContextMenuStrip = cmsDelete; Reader.Close(); } }
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Node != treeView1.Nodes[0]) { if (e.Node.Parent.Text == "LTEX") { if (SelectedNode != -1) { BLMAPLTEX LTEX = ltexComponent1.ReturnData(); if (LTEX != null) { LTEX.Entries = new List <Entry>(); LTEX.Entries = ReturnLTEX(); listLTEX[SelectedNode] = LTEX; } } ltexComponent1.AddData(listLTEX[e.Node.Index]); AddLTEX(listLTEX[e.Node.Index].Entries); SelectedNode = e.Node.Index; } } }
private void ExportLTEX_Click(object sender, EventArgs e) { SaveFileDialog s = new SaveFileDialog(); s.Filter = "Binary Light Texture (*bltex)|*.bltex"; if (s.ShowDialog() == DialogResult.OK) { BLMAPLTEX LTEX = ltexComponent1.ReturnData(); LTEX.Entries = ReturnLTEX(); listLTEX[SelectedNode] = LTEX; BigEndianWriter Writer = new BigEndianWriter(File.Open(s.FileName, FileMode.Create)); Writer.WriteChars("LTEX".ToCharArray(), 0, 4); Writer.WriteInt32(0x3C + LTEX.Entries.Count * 8); Writer.WriteUInt32(LTEX.Padding); Writer.WriteUInt32(LTEX.Unknown); Writer.WriteUInt16(Convert.ToUInt16(LTEX.Entries.Count)); Writer.WriteUInt16(LTEX.Unknown1); Writer.WriteChars(LTEX.Texture.ToCharArray(), 0, 4); Writer.WriteUInt32(LTEX.Unknown2); Writer.WriteUInt32(LTEX.Unknown3); Writer.WriteUInt32(LTEX.Unknown4); Writer.WriteUInt32(LTEX.Unknown5); Writer.WriteUInt32(LTEX.Unknown6); Writer.WriteUInt32(LTEX.Unknown7); Writer.WriteUInt32(LTEX.Unknown8); Writer.WriteUInt32(LTEX.Unknown9); Writer.WriteInt32(LTEX.Entries.Count * 8); for (int j = 0; j < LTEX.Entries.Count; j++) { Writer.WriteSingle(LTEX.Entries[j].Unknown1); Writer.WriteUInt32(LTEX.Entries[j].Unknown2); } Writer.Close(); } }
public void ReadBLMAP(string FilePath) { FileName = FilePath; BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(FilePath))); treeView1.Nodes[0].Nodes.Clear(); treeView1.Nodes[0].Text = Path.GetFileName(FilePath); treeView1.Nodes[0].Nodes.Add("Header"); treeView1.Nodes[0].Nodes.Add("LTEX"); listLTEX.Clear(); BLMAP.Magic = Reader.ReadASCII(4); if (BLMAP.Magic != "LMAP") { throw new WrongMagicException(BLMAP.Magic, "LMAP", Reader.BaseStream.Position - 4); } BLMAP.FileSize = Reader.ReadUInt32(); BLMAP.Unknown1 = Reader.ReadUInt32(); BLMAP.Unknown2 = Reader.ReadUInt32(); BLMAP.NrLTEX = Reader.ReadUInt16(); BLMAP.Unknown3 = Reader.ReadUInt16(); BLMAP.Unknown4 = Reader.ReadUInt32(); BLMAP.Unknown5 = Reader.ReadUInt32(); BLMAP.Unknown6 = Reader.ReadUInt32(); for (int i = 0; i < BLMAP.NrLTEX; i++) { BLMAPLTEX LTEX = new BLMAPLTEX(); long Offset = Reader.BaseStream.Position; LTEX.Magic = Reader.ReadASCII(4); if (LTEX.Magic != "LTEX") { throw new WrongMagicException(LTEX.Magic, "LTEX", Reader.BaseStream.Position - 4); } LTEX.SectionSize = Reader.ReadUInt32(); LTEX.Padding = Reader.ReadUInt32(); LTEX.Unknown = Reader.ReadUInt32(); LTEX.NrEntries = Reader.ReadUInt16(); LTEX.Unknown1 = Reader.ReadUInt16(); LTEX.Texture = Reader.ReadASCII(4); LTEX.Unknown2 = Reader.ReadUInt32(); LTEX.Unknown3 = Reader.ReadUInt32(); LTEX.Unknown4 = Reader.ReadUInt32(); LTEX.Unknown5 = Reader.ReadUInt32(); LTEX.Unknown6 = Reader.ReadUInt32(); LTEX.Unknown7 = Reader.ReadUInt32(); LTEX.Unknown8 = Reader.ReadUInt32(); LTEX.Unknown9 = Reader.ReadUInt32(); LTEX.EntriesSize = Reader.ReadUInt32(); LTEX.Entries = new List <Entry>(); for (int j = 0; j < LTEX.NrEntries; j++) { LTEX.Entries.Add(new Entry() { Unknown1 = Reader.ReadSingle(), Unknown2 = Reader.ReadUInt32() }); } listLTEX.Add(LTEX); treeView1.Nodes[0].Nodes[1].Nodes.Add("LTEX " + HexUtil.ConvertToHex(i)); treeView1.Nodes[0].Nodes[1].Nodes[treeView1.Nodes[0].Nodes[1].Nodes.Count - 1].ContextMenuStrip = cmsDelete; Reader.BaseStream.Position = Offset + LTEX.SectionSize; } Reader.Close(); lmapComponent1.AddData(BLMAP); if (BLMAP.NrLTEX >= 1) { ltexComponent1.AddData(listLTEX[0]); AddLTEX(listLTEX[0].Entries); } else { SelectedNode = -1; } this.Show(); }