/*
** 2013 June 16
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
*/
package info.ata4.junity.serialize;
import info.ata4.io.DataReader;
import info.ata4.io.DataWriter;
import info.ata4.io.Struct;
import java.io.IOException;
/**
*
* @author Nico Bergemann <barracuda415 at yahoo.de>
* @unity SerializedFileHeader
*/
public class SerializedFileHeader implements Struct {
// size of the structure data
private long metadataSize;
// size of the whole asset file
private long fileSize;
// 5 = 1.2 - 2.0
// 6 = 2.1 - 2.6
// 7 = 3.0 (?)
// 8 = 3.1 - 3.4
// 9 = 3.5 - 4.5
// 11 = pre-5.0
// 12 = pre-5.0
// 13 = pre-5.0
// 14 = 5.0
// 15 = 5.0 (p3 and newer)
private int version;
// offset to the serialized data
private long dataOffset;
// byte order of the serialized data?
private byte endianness;
// unused
private final byte[] reserved = new byte[3];
public long metadataSize() {
return metadataSize;
}
public void metadataSize(long metadataSize) {
this.metadataSize = metadataSize;
}
public long fileSize() {
return fileSize;
}
public void fileSize(long fileSize) {
this.fileSize = fileSize;
}
public int version() {
return version;
}
public void version(int version) {
this.version = version;
}
public long dataOffset() {
return dataOffset;
}
public void dataOffset(long dataOffset) {
this.dataOffset = dataOffset;
}
public byte endianness() {
return endianness;
}
public void endianness(byte endianness) {
this.endianness = endianness;
}
@Override
public void read(DataReader in) throws IOException {
metadataSize = in.readInt();
fileSize = in.readUnsignedInt();
version = in.readInt();
dataOffset = in.readUnsignedInt();
if (version >= 9) {
endianness = in.readByte();
in.readBytes(reserved);
}
}
@Override
public void write(DataWriter out) throws IOException {
out.writeUnsignedInt(metadataSize);
out.writeUnsignedInt(fileSize);
out.writeInt(version);
out.writeUnsignedInt(dataOffset);
if (version >= 9) {
out.writeByte(endianness);
out.writeBytes(reserved);
}
}
}