public static bool Commpare(List <DS_protocol.p_IdToFrames> T1, List <DS_protocol.p_IdToFrames> T2)
    {
        if (T1.Count != T2.Count)
        {
            return(false);
        }

        for (int nLoop = 0; nLoop < T1.Count; ++nLoop)
        {
            DS_protocol.p_IdToFrames T1area_to_Frames = T1[nLoop];
            DS_protocol.p_IdToFrames T2area_to_Frames = T2[nLoop];

            if (T1area_to_Frames.areaid != T2area_to_Frames.areaid)
            {
                return(false);
            }

            for (int nLoop2 = 0; nLoop2 < T1area_to_Frames.frames.Count; ++nLoop2)
            {
                DS_protocol.p_SyncFrame T1p_syncFrame = T1area_to_Frames.frames[nLoop2];
                DS_protocol.p_SyncFrame T2p_syncFrame = T2area_to_Frames.frames[nLoop2];

                if (T1p_syncFrame.frame_count != T2p_syncFrame.frame_count)
                {
                    return(false);
                }

                if (T1p_syncFrame.msg_list.Count != T2p_syncFrame.msg_list.Count)
                {
                    return(false);
                }

                for (int nLoop3 = 0; nLoop3 < T1p_syncFrame.msg_list.Count; ++nLoop3)
                {
                    DS_protocol.p_CustomSyncMsg T1Msg = T1p_syncFrame.msg_list[nLoop3];
                    DS_protocol.p_CustomSyncMsg T2Msg = T2p_syncFrame.msg_list[nLoop3];

                    if (!Commpare(T1Msg, T2Msg))
                    {
                        return(false);
                    }
                }
            }
        }


        return(true);
    }
    public static void Buffer_SyncFrame_msg_list2(List <CustomSyncMsg> msg_list, List <DS_protocol.p_CustomSyncMsg> p_msg_list)
    {
        foreach (CustomSyncMsg msg in msg_list)
        {
            if (msg.msg_type == (int)RequestType.ENTERAREA)
            {
                EnterAreaMessage enterArea           = msg as EnterAreaMessage;
                DS_protocol.p_EnterAreaMessage p_msg = new DS_protocol.p_EnterAreaMessage();
                p_msg.id         = enterArea.id;
                p_msg.health     = enterArea.health;;
                p_msg.position_x = enterArea.position.x;
                p_msg.position_y = enterArea.position.y;
                p_msg.position_z = enterArea.position.z;

                p_msg.direction_x = enterArea.direction.x;
                p_msg.direction_y = enterArea.direction.y;
                p_msg.direction_z = enterArea.direction.z;

                p_msg.rotation_x = enterArea.rotation.x;
                p_msg.rotation_y = enterArea.rotation.y;


                //p_msg.area_id = enterArea.area_id;

                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = enterArea.msg_type;
                p_basemsg.player_id = enterArea.player_id;
                p_basemsg.EnterArea = p_msg;
                p_msg_list.Add(p_basemsg);
            }
            if (msg.msg_type == (int)RequestType.INPUT)
            {
                InputMessage input = msg as InputMessage;
                DS_protocol.p_InputMessage p_msg = new DS_protocol.p_InputMessage();

                p_msg.moving_x = input.moving.x;
                p_msg.moving_y = input.moving.y;
                p_msg.moving_z = input.moving.z;

                //p_msg.area_id = input.area_id;

                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = input.msg_type;
                p_basemsg.player_id = input.player_id;
                p_basemsg.Input     = p_msg;
                p_msg_list.Add(p_basemsg);
            }
            if (msg.msg_type == (int)RequestType.LEAVEAREA)
            {
                LeaveAreaMessage leaveArea           = msg as LeaveAreaMessage;
                DS_protocol.p_LeaveAreaMessage p_msg = new DS_protocol.p_LeaveAreaMessage();

                p_msg.id = leaveArea.id;

                //p_msg.area_id = leaveArea.area_id;
                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = leaveArea.msg_type;
                p_basemsg.player_id = leaveArea.player_id;
                p_basemsg.LeaveArea = p_msg;
                p_msg_list.Add(p_basemsg);
            }
            if (msg.msg_type == (int)RequestType.ROTATE)
            {
                RotateMessage rotate = msg as RotateMessage;
                DS_protocol.p_RotateMessage p_msg = new DS_protocol.p_RotateMessage();


                p_msg.delta_x = rotate.delta.x;
                p_msg.delta_y = rotate.delta.y;

                //p_msg.area_id = rotate.area_id;

                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = rotate.msg_type;
                p_basemsg.player_id = rotate.player_id;
                p_basemsg.Rotate    = p_msg;
                p_msg_list.Add(p_basemsg);
            }
            if (msg.msg_type == (int)RequestType.POSITION)
            {
                PositionMessage rotate = msg as PositionMessage;
                DS_protocol.p_PositionMessage p_msg = new DS_protocol.p_PositionMessage();

                p_msg.delta_x = rotate.delta.x;
                p_msg.delta_y = rotate.delta.y;

                // p_msg.area_id = rotate.area_id;

                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = rotate.msg_type;
                p_basemsg.player_id = rotate.player_id;
                p_basemsg.Position  = p_msg;
                p_msg_list.Add(p_basemsg);
            }
            if (msg.msg_type == (int)RequestType.SPAWN)
            {
                SpawnMessage spawn = msg as SpawnMessage;
                DS_protocol.p_SpawnMessage p_msg = new DS_protocol.p_SpawnMessage();

                p_msg.id         = spawn.id;
                p_msg.position_x = spawn.position.x;
                p_msg.position_y = spawn.position.y;
                p_msg.position_z = spawn.position.z;


                //p_msg.area_id = spawn.area_id;

                DS_protocol.p_CustomSyncMsg p_basemsg = new DS_protocol.p_CustomSyncMsg();
                p_basemsg.msg_type  = spawn.msg_type;
                p_basemsg.player_id = spawn.player_id;
                p_basemsg.Spawn     = p_msg;
                p_msg_list.Add(p_basemsg);
            }
        }
    }
    public static bool Commpare(DS_protocol.p_CustomSyncMsg T1Ms, DS_protocol.p_CustomSyncMsg T2Ms)
    {
        if (T1Ms.player_id != T2Ms.player_id)
        {
            return(false);
        }

        if (T1Ms.msg_type != T2Ms.msg_type)
        {
            return(false);
        }

        if (T1Ms.msg_type == (int)RequestType.ENTERAREA)
        {
            DS_protocol.p_EnterAreaMessage T1Msg = T1Ms.EnterArea;
            DS_protocol.p_EnterAreaMessage T2Msg = T2Ms.EnterArea;

            if (T1Msg.id != T2Msg.id ||
                T1Msg.health != T2Msg.health ||
                T1Msg.position_x != T2Msg.position_x ||
                T1Msg.position_y != T2Msg.position_y ||
                T1Msg.position_z != T2Msg.position_z ||
                T1Msg.direction_x != T2Msg.direction_x ||
                T1Msg.direction_y != T2Msg.direction_y ||
                T1Msg.direction_z != T2Msg.direction_z ||
                T1Msg.rotation_x != T2Msg.rotation_x ||
                T1Msg.rotation_y != T2Msg.rotation_y)
            {
                return(false);
            }
        }
        else if (T1Ms.msg_type == (int)RequestType.INPUT)
        {
            DS_protocol.p_InputMessage T1Msg = T1Ms.Input;
            DS_protocol.p_InputMessage T2Msg = T2Ms.Input;


            if (T1Msg.moving_x != T2Msg.moving_x ||
                T1Msg.moving_y != T2Msg.moving_y ||
                T1Msg.moving_z != T2Msg.moving_z)
            {
                return(false);
            }
        }
        else if (T1Ms.msg_type == (int)RequestType.LEAVEAREA)
        {
            DS_protocol.p_LeaveAreaMessage T1Msg = T1Ms.LeaveArea;
            DS_protocol.p_LeaveAreaMessage T2Msg = T2Ms.LeaveArea;

            if (T1Msg.id != T2Msg.id)
            {
                return(false);
            }
        }
        else if (T1Ms.msg_type == (int)RequestType.ROTATE)
        {
            DS_protocol.p_RotateMessage T1Msg = T1Ms.Rotate;
            DS_protocol.p_RotateMessage T2Msg = T2Ms.Rotate;

            if (T1Msg.delta_x != T2Msg.delta_x ||
                T1Msg.delta_y != T2Msg.delta_y)
            {
                return(false);
            }
        }
        else if (T1Ms.msg_type == (int)RequestType.POSITION)
        {
            DS_protocol.p_PositionMessage T1Msg = T1Ms.Position;
            DS_protocol.p_PositionMessage T2Msg = T2Ms.Position;

            if (T1Msg.delta_x != T2Msg.delta_x ||
                T1Msg.delta_y != T2Msg.delta_y)
            {
                return(false);
            }
        }
        else if (T1Ms.msg_type == (int)RequestType.SPAWN)
        {
            DS_protocol.p_SpawnMessage T1Msg = T1Ms.Spawn;
            DS_protocol.p_SpawnMessage T2Msg = T2Ms.Spawn;

            if (T1Msg.id != T2Msg.id ||
                T1Msg.position_x != T2Msg.position_x ||
                T1Msg.position_y != T2Msg.position_y ||
                T1Msg.position_z != T2Msg.position_z)
            {
                return(false);
            }
        }


        return(true);
    }