MineFrog.Player.UpdatePlayerPos C# (CSharp) Method

UpdatePlayerPos() private method

private UpdatePlayerPos ( ) : void
return void
        private void UpdatePlayerPos()
        {
            if (_isInvisible) return;

            var packet = new Packet();

            if (_delta.IsZero())
            {
                return;
            }
            if (_delta.NeedTp())
            {
                packet.Id = PacketType.PositionAndOrientationTeleport;
                packet.AddVar(UserId);
                packet.AddVar(Position.X);
                packet.AddVar(Position.Y);
                packet.AddVar(Position.Z);
                packet.AddVar(Position.Yaw);
                packet.AddVar(Position.Pitch);
            }
            else
            {
                if (_delta.PosChanged())
                {
                    if (_delta.RotChanged())
                    {
                        //Pos AND Rot
                        packet.Id = PacketType.PositionAndOrientationUpdate;
                        packet.AddVar(UserId);
                        packet.AddVar((byte) _delta.X);
                        packet.AddVar((byte) _delta.Y);
                        packet.AddVar((byte) _delta.Z);
                        packet.AddVar(Position.Yaw);
                        packet.AddVar(Position.Pitch);
                    }
                    else
                    {
                        //Just Pos
                        packet.Id = PacketType.PositionUpdate;
                        packet.AddVar(UserId);
                        packet.AddVar((byte) _delta.X);
                        packet.AddVar((byte) _delta.Y);
                        packet.AddVar((byte) _delta.Z);
                    }
                }
                else
                {
                    if (_delta.RotChanged())
                    {
                        packet.Id = PacketType.OrientationUpdate;
                        packet.AddVar(UserId);
                        packet.AddVar(Position.Yaw);
                        packet.AddVar(Position.Pitch);
                    }
                }
            }

            foreach (Player p in Level.Players.ToArray())
            {
                if (p.IsActive && p != this)
                {
                    p.SendPacket(packet);
                }
            }
        }