public override void Deserialize(BinaryReader reader)
{
base.Deserialize(reader);
var roomN = reader.ReadInt32();
Rooms = new VMRoomPortal[roomN];
for (int i=0; i< roomN; i++) Rooms[i] = new VMRoomPortal(reader);
if (reader.ReadBoolean()) CurrentPortal = new VMRoomPortal(reader);
var wtLen = reader.ReadInt32();
if (wtLen > -1)
{
WalkTo = new Point[wtLen];
for (int i = 0; i < wtLen; i++) WalkTo[i] = new Point(reader.ReadInt32(), reader.ReadInt32());
}
WalkDirection = reader.ReadDouble();
TargetDirection = reader.ReadDouble();
IgnoreRooms = reader.ReadBoolean();
State = (VMRoutingFrameState)reader.ReadByte();
PortalTurns = reader.ReadInt32();
WaitTime = reader.ReadInt32();
Timeout = reader.ReadInt32();
Retries = reader.ReadInt32();
AttemptedChair = reader.ReadBoolean();
TurnTweak = reader.ReadSingle();
TurnFrames = reader.ReadInt32();
MoveTotalFrames = reader.ReadInt32();
MoveFrames = reader.ReadInt32();
Velocity = reader.ReadInt32();
CallFailureTrees = reader.ReadBoolean();
var igrN = reader.ReadInt32();
IgnoredRooms = new VMRoomPortal[igrN];
for (int i = 0; i < igrN; i++) IgnoredRooms[i] = new VMRoomPortal(reader);
var avaN = reader.ReadInt32();
AvatarsToConsider = new short[avaN];
for (int i = 0; i < avaN; i++) AvatarsToConsider[i] = reader.ReadInt16();
PreviousPosition.Deserialize(reader);
CurrentWaypoint.Deserialize(reader);
RoomRouteInvalid = reader.ReadBoolean();
if (reader.ReadBoolean()) {
Slot = SLOTItemSerializer.Deserialize(reader);
}
Target = reader.ReadInt16();
var chLen = reader.ReadInt32();
if (chLen > -1)
{
Choices = new VMFindLocationResultMarshal[chLen];
for (int i = 0; i < chLen; i++)
{
Choices[i] = new VMFindLocationResultMarshal();
Choices[i].Deserialize(reader);
}
}
if (reader.ReadBoolean())
{
CurRoute = new VMFindLocationResultMarshal();
CurRoute.Deserialize(reader);
}
}