private void OnNty_LeaveView(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); LeaveViewNtf Nty = Serializer.Deserialize <LeaveViewNtf>(ms); for (int i = 0; i < Nty.List.Count; i++) { GTWorld.Instance.DelActor(Nty.List[i]); } }
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); } }