public static RigidBodyState Deserialize(BitReader br, UInt32 netVersion) { var rbs = new RigidBodyState(); rbs.Sleeping = br.ReadBit(); if (netVersion >= 5) { rbs.Position = FixedPointVector3D.Deserialize(br, netVersion); } else { rbs.Position = Vector3D.Deserialize(br, netVersion); } if (netVersion >= 7) { rbs.Unknown1 = br.ReadBit(); } rbs.Rotation = Vector3D.DeserializeFixed(br, netVersion); if (netVersion >= 7) { rbs.Unknown2 = br.ReadBit(); } if (!rbs.Sleeping) { rbs.LinearVelocity = Vector3D.Deserialize(br, netVersion); rbs.AngularVelocity = Vector3D.Deserialize(br, netVersion); } return(rbs); }
public static FixedPointVector3D Deserialize(BitReader br, UInt32 netVersion) { var vector = new FixedPointVector3D(); vector._integerVector = Vector3D.Deserialize(br, netVersion); // Could make this generic for any number of decimal places, but this is all I need for now vector.X = vector._integerVector.X / 100; vector.Y = vector._integerVector.Y / 100; vector.Z = vector._integerVector.Z / 100; return(vector); }