/// <summary> /// /// </summary> /// <param name="entityID"></param> /// <param name="p"></param> /// <remarks>entityID is a ushort!! dit is om zo maar 2 bytes te moeten gebruiken ipv 4 bytes /// voor de entityID. Enkel de entities met id 0 -> ushort.MaxValue kunnen entityupdatepackets /// versturen. De statische objecten moeten dus een id hebben van meer dan ushort.MaxValue</remarks> public void WriteEntityUpdatePacket(ushort entityID, UpdateEntityPacket p) { //if (entityID < 0 || entityID > ushort.MaxValue ) throw new Exception("De entityID is out of range. See remarks of this method for more info"); byte[] dgram = p.ToNetworkBytes(); dataWriter.Write(entityID); //dataWriter.WriteCompressed(dgram.Length); dataWriter.Write(dgram); }
public static UpdateEntityPacket FromNetworkBytes(ByteReader br) { UpdateEntityPacket p = new UpdateEntityPacket(); //p.EntityID = br.ReadInt32(); p.Positie = br.ReadVector3(); p.RotatieQuat = br.ReadQuaternion(); //p.Rotatie = Matrix.Identity; return(p); }
public UpdateEntityPacket ReadEntityUpdate(out ushort entityID) { entityID = 0; if (dataReader.BytesLeft == 0) { return(UpdateEntityPacket.Empty); } entityID = dataReader.ReadUInt16(); //length = dataReader.ReadCompressedInt32(); return(UpdateEntityPacket.FromNetworkBytes(dataReader)); }