Exemplo n.º 1
0
    private void OnNty_EnterView(MessageRecv obj)
    {
        System.IO.MemoryStream ms  = new System.IO.MemoryStream(obj.Data);
        EnterViewNtf           nty = Serializer.Deserialize <EnterViewNtf>(ms);

        for (int i = 0; i < nty.List.Count; i++)
        {
            Character cc = GTWorld.Instance.AddActorLocalSync(nty.List[i]);
        }
    }
Exemplo n.º 2
0
    public void GetAOI(Vector3 pos)
    {
        List <ulong>      delList = new List <ulong>();
        List <XCharacter> addList = new List <XCharacter>();
        HashSet <ulong>   allList = new HashSet <ulong>();

        foreach (var current in m_AllActors)
        {
            XCharacter d = current.Value;
            float      v = (pos.x - d.PosX) * (pos.x - d.PosX) + (pos.z - d.PosZ) * (pos.z - d.PosZ);
            if (v < 10000)
            {
                allList.Add(d.GUID);
            }
        }
        foreach (var guid in allList)
        {
            if (m_AOIActors.ContainsKey(guid) == false)
            {
                addList.Add(m_AllActors[guid]);
            }
        }
        foreach (var current in m_AOIActors)
        {
            if (allList.Contains(current.Key) == false)
            {
                delList.Add(current.Key);
            }
        }

        if (delList.Count > 0)
        {
            for (int i = 0; i < delList.Count; i++)
            {
                m_AOIActors.Remove(delList[i]);
            }
            LeaveViewNtf ntf = new LeaveViewNtf();
            ntf.List.AddRange(delList);
            NetworkManager.Instance.Send <LeaveViewNtf>(MessageID.MSG_LEAVE_VIEW_NTF, ntf);
        }
        if (addList.Count > 0)
        {
            for (int i = 0; i < addList.Count; i++)
            {
                m_AOIActors.Add(addList[i].GUID, addList[i]);
            }
            EnterViewNtf ntf = new EnterViewNtf();
            ntf.List.AddRange(addList);
            NetworkManager.Instance.Send <EnterViewNtf>(MessageID.MSG_ENTER_VIEW_NTF, ntf);
        }
    }