public override int OnCalculateSize(bool force) { builder = new LabelBuilder(); foreach (RSEQLabelNode node in Children) builder.Add(node.Id, node._name); _audioLen = 0; return _headerLen = 0x20 + _dataBuffer.Length + builder.GetSize(); }
public override int OnCalculateSize(bool force) { builder = new LabelBuilder(); foreach (RSEQLabelNode node in Children) { builder.Add(node.Id, node._name); } _audioLen = 0; return(_headerLen = 0x20 + _dataBuffer.Length + builder.GetSize()); }
public override unsafe void Export(string outPath) { LabelBuilder labl; int lablLen, size; VoidPtr addr; Rebuild(); if (_audioSource != DataSource.Empty) { //Get strings labl = new LabelBuilder(); GetStrings(labl); lablLen = (labl.Count == 0) ? 0 : labl.GetSize(); size = WorkingUncompressed.Length + lablLen + _audioSource.Length; using (FileStream stream = new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { stream.SetLength(size); using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size)) { addr = map.Address; //Write header Memory.Move(addr, WorkingUncompressed.Address, (uint)WorkingUncompressed.Length); addr += WorkingUncompressed.Length; //Write strings if (lablLen > 0) { labl.Write(addr); } addr += lablLen; //Write data Memory.Move(addr, _audioSource.Address, (uint)_audioSource.Length); } } } else { base.Export(outPath); } }
public override void Export(string outPath) { LabelBuilder labl; int lablLen, size; VoidPtr addr; Rebuild(); //Get strings labl = new LabelBuilder(); GetStrings(labl); lablLen = labl.Count == 0 ? 0 : labl.GetSize(); size = WorkingUncompressed.Length + lablLen + _audioSource.Length; using (FileStream stream = new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { stream.SetLength(size); using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size)) { addr = map.Address; //Write headers MoveRawUncompressed(addr, WorkingUncompressed.Length); addr += WorkingUncompressed.Length; //Write strings if (lablLen > 0) { labl.Write(addr); } addr += lablLen; //Write sound data int audioLen = _audioSource.Length; Memory.Move(addr, _audioSource.Address, (uint)audioLen); _audioSource.Close(); _audioSource = new DataSource(addr, audioLen); } } }
public override void OnRebuild(VoidPtr address, int length, bool force) { RSEQHeader *header = (RSEQHeader *)address; header->_header.Endian = Endian.Big; header->_header._tag = RSEQHeader.Tag; header->_header._version = 0x100; header->_header._length = length; header->_header._numEntries = 2; header->_header._firstOffset = 0x20; header->_dataOffset = 0x20; header->_dataLength = _dataBuffer.Length; header->_lablOffset = 0x20 + _dataBuffer.Length; header->_lablLength = builder.GetSize(); //MML Parser is not complete yet, so copy raw data over Memory.Move((VoidPtr)header + header->_dataOffset, _dataBuffer.Address, (uint)_dataBuffer.Length); builder.Write((VoidPtr)header + header->_lablOffset); }
public unsafe override void Export(string outPath) { LabelBuilder labl; int lablLen, size; VoidPtr addr; Rebuild(); if (_audioSource != DataSource.Empty) { //Get strings labl = new LabelBuilder(); GetStrings(labl); lablLen = (labl.Count == 0) ? 0 : labl.GetSize(); size = WorkingUncompressed.Length + lablLen + _audioSource.Length; using (FileStream stream = new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { stream.SetLength(size); using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size)) { addr = map.Address; //Write header Memory.Move(addr, WorkingUncompressed.Address, (uint)WorkingUncompressed.Length); addr += WorkingUncompressed.Length; //Write strings if (lablLen > 0) labl.Write(addr); addr += lablLen; //Write data Memory.Move(addr, _audioSource.Address, (uint)_audioSource.Length); } } } else base.Export(outPath); }