public static UpdatePosition read(BinaryReader binaryReader) { UpdatePosition newObj = new UpdatePosition(); newObj.object_id = binaryReader.ReadUInt32(); newObj.positionPack = PositionPack.read(binaryReader); return(newObj); }
public static PositionAndMovement read(BinaryReader binaryReader) { PositionAndMovement newObj = new PositionAndMovement(); newObj.object_id = binaryReader.ReadUInt32(); newObj.positionPack = PositionPack.read(binaryReader); newObj.movementData = MovementData.read(binaryReader); return(newObj); }
public GameMessageUpdatePosition(WorldObject worldObject) : base(GameMessageOpcode.UpdatePosition, GameMessageGroup.SmartboxQueue) { //Console.WriteLine($"Sending UpdatePosition for {worldObject.Name}"); // todo: avoid create intermediate object PositionPack = new PositionPack(worldObject); Writer.WriteGuid(worldObject.Guid); Writer.Write(PositionPack); }
public List <string> packedItems; // For display purposes public static PositionPack read(BinaryReader binaryReader) { PositionPack newObj = new PositionPack(); newObj.packedItems = new List <string>(); newObj.bitfield = binaryReader.ReadUInt32(); newObj.position = Position.readOrigin(binaryReader); if ((newObj.bitfield & (uint)PackBitfield.OrientationHasNoW) == 0) { newObj.position.qw = binaryReader.ReadSingle(); } else { newObj.packedItems.Add(PackBitfield.OrientationHasNoW.ToString()); } if ((newObj.bitfield & (uint)PackBitfield.OrientationHasNoX) == 0) { newObj.position.qx = binaryReader.ReadSingle(); } else { newObj.packedItems.Add(PackBitfield.OrientationHasNoX.ToString()); } if ((newObj.bitfield & (uint)PackBitfield.OrientationHasNoY) == 0) { newObj.position.qy = binaryReader.ReadSingle(); } else { newObj.packedItems.Add(PackBitfield.OrientationHasNoY.ToString()); } if ((newObj.bitfield & (uint)PackBitfield.OrientationHasNoZ) == 0) { newObj.position.qz = binaryReader.ReadSingle(); } else { newObj.packedItems.Add(PackBitfield.OrientationHasNoZ.ToString()); } // newObj.position.frame.cache(); if ((newObj.bitfield & (uint)PackBitfield.HasVelocity) != 0) { newObj.velocity_x = binaryReader.ReadSingle(); newObj.velocity_y = binaryReader.ReadSingle(); newObj.velocity_z = binaryReader.ReadSingle(); newObj.packedItems.Add(PackBitfield.HasVelocity.ToString()); } if ((newObj.bitfield & (uint)PackBitfield.HasPlacementID) != 0) { newObj.placement_id = binaryReader.ReadUInt32(); newObj.packedItems.Add(PackBitfield.HasPlacementID.ToString()); } newObj.has_contact = (newObj.bitfield & (uint)PackBitfield.IsGrounded) != 0; if (newObj.has_contact) { newObj.packedItems.Add(PackBitfield.IsGrounded.ToString()); } newObj.instance_timestamp = binaryReader.ReadUInt16(); newObj.position_timestamp = binaryReader.ReadUInt16(); newObj.teleport_timestamp = binaryReader.ReadUInt16(); newObj.force_position_timestamp = binaryReader.ReadUInt16(); return(newObj); }