/// <summary> /// Deserialize this object's structure from the _Buffer stream. /// </summary> protected virtual void Deserialize() { #if DEBUG #if LOG_RECORDS Log.WriteLine(""); #endif Record(Name, this); Record("ExportSize", ExportTable.SerialSize); #endif // TODO: Corrigate version if (Package.Version >= 322) { // TODO: Corrigate version. Fix component detection! //if (_Buffer.Version > 400 // && HasObjectFlag(Flags.ObjectFlagsHO.PropertiesObject) // && HasObjectFlag(Flags.ObjectFlagsHO.ArchetypeObject)) //{ // var componentClass = _Buffer.ReadObjectIndex(); // var componentName = _Buffer.ReadNameIndex(); //} var netIndex = _Buffer.ReadObjectIndex(); Record("netIndex", TryGetIndexObject(netIndex)); } else { if (HasObjectFlag(Flags.ObjectFlagsLO.HasStack)) { int node = _Buffer.ReadIndex(); Record("node", GetIndexObject(node)); _Buffer.ReadIndex(); // stateNode _Buffer.ReadUInt64(); // probeMask _Buffer.ReadUInt32(); // latentAction if (node != 0) { _Buffer.ReadIndex(); // Offset } } } if (!IsClassType("Class")) { // REMINDER:Ends with a NameIndex referencing to "None"; 1/4/8 bytes DeserializeProperties(); } }
/// <summary> /// Deserialize this object's structure from the _Buffer stream. /// </summary> protected virtual void Deserialize() { #if DEBUG #if LOG_RECORDS Console.WriteLine(""); #endif Record(Name, this); Record("ExportSize", ExportTable.SerialSize); #endif // TODO: Corrigate version if (Package.Version >= 322 #if MKKE && Package.Build != UnrealPackage.GameBuild.BuildName.MKKE #endif ) { // TODO: Corrigate version. Fix component detection! //if( _Buffer.Version > 400 // && HasObjectFlag( Flags.ObjectFlagsHO.PropertiesObject ) // && HasObjectFlag( Flags.ObjectFlagsHO.ArchetypeObject ) ) //{ // var componentClass = _Buffer.ReadObjectIndex(); // var componentName = _Buffer.ReadNameIndex(); //} var netIndex = _Buffer.ReadObjectIndex(); Record("netIndex", TryGetIndexObject(netIndex)); } else { if (HasObjectFlag(Flags.ObjectFlagsLO.HasStack)) { int node = _Buffer.ReadIndex(); Record("node", GetIndexObject(node)); _Buffer.ReadIndex(); // stateNode _Buffer.ReadUInt64(); // probeMask _Buffer.ReadUInt32(); // latentAction if (node != 0) { _Buffer.ReadIndex(); // Offset } } #if SWAT4 if (Package.Build == UnrealPackage.GameBuild.BuildName.Swat4) { // 8 bytes: Value: 3 // 4 bytes: Value: 1 _Buffer.Skip(12); } #endif #if BIOSHOCK if (Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock) { _Buffer.Skip(8); } #endif } if (!IsClassType("Class")) { #if SWAT4 if (Package.Build != UnrealPackage.GameBuild.BuildName.Swat4) { #endif // REMINDER:Ends with a NameIndex referencing to "None"; 1/4/8 bytes DeserializeProperties(); #if SWAT4 } else { _Buffer.Skip(1); } #endif } #if UNREAL2 else if (Package.Build == UnrealPackage.GameBuild.BuildName.Unreal2) { int count = _Buffer.ReadIndex(); for (int i = 0; i < count; ++i) { _Buffer.ReadObjectIndex(); } } #endif }