use of info.ata4.io.DataReader in project disunity by ata4.
the class TypeTreeV3 method read.
@Override
public void read(DataReader in) throws IOException {
revision = new UnityVersion(in.readStringNull(255));
attributes = in.readInt();
embedded = in.readBoolean();
int numBaseClasses = in.readInt();
for (int i = 0; i < numBaseClasses; i++) {
int classID = in.readInt();
TypeRoot typeRoot = new TypeRoot();
typeRoot.classID(classID);
if (classID < 0) {
UnityHash128 scriptID = new UnityHash128();
in.readStruct(scriptID);
typeRoot.scriptID(scriptID);
}
UnityHash128 oldTypeHash = new UnityHash128();
in.readStruct(oldTypeHash);
typeRoot.oldTypeHash(oldTypeHash);
if (embedded) {
Node<T> node = new Node<>();
readNode(in, node);
typeRoot.nodes(node);
}
typeMap.put(classID, typeRoot);
}
}
use of info.ata4.io.DataReader in project disunity by ata4.
the class TypeTreeV2 method read.
@Override
public void read(DataReader in) throws IOException {
revision = new UnityVersion(in.readStringNull(255));
attributes = in.readInt();
super.read(in);
// padding
in.readInt();
}
use of info.ata4.io.DataReader in project disunity by ata4.
the class SerializedFileMetadata method read.
@Override
public void read(DataReader in) throws IOException {
// load type tree
if (version > 13) {
typeTree = new TypeTreeV3(TypeV2.class);
} else if (version > 6) {
typeTree = new TypeTreeV2(TypeV1.class);
} else {
typeTree = new TypeTreeV1(TypeV1.class);
}
typeTreeBlock.markBegin(in);
in.readStruct(typeTree);
typeTreeBlock.markEnd(in);
L.log(Level.FINER, "typeTreeBlock: {0}", typeTreeBlock);
// load object info table
if (version > 14) {
objectInfoTable = new ObjectInfoTableV2(ObjectInfoV3.class);
} else if (version > 13) {
objectInfoTable = new ObjectInfoTableV2(ObjectInfoV2.class);
} else {
objectInfoTable = new ObjectInfoTableV1(ObjectInfoV1.class);
}
objectInfoBlock.markBegin(in);
in.readStruct(objectInfoTable);
objectInfoBlock.markEnd(in);
L.log(Level.FINER, "objectInfoBlock: {0}", objectInfoBlock);
// load object identifiers (Unity 5+ only)
objectIDTable = new ObjectIdentifierTable();
if (version > 10) {
objectIDBlock.markBegin(in);
in.readStruct(objectIDTable);
objectIDBlock.markEnd(in);
L.log(Level.FINER, "objectIDBlock: {0}", objectIDBlock);
}
// load external references
if (version > 5) {
externals = new FileIdentifierTable(FileIdentifierV2.class);
} else {
externals = new FileIdentifierTable(FileIdentifierV1.class);
}
externalsBlock.markBegin(in);
in.readStruct(externals);
externalsBlock.markEnd(in);
L.log(Level.FINER, "externalsBlock: {0}", externalsBlock);
}
Aggregations