// TODO: Replace with vanilla call. private void AddVisibleFromNear(Network.Networkable net, Group additionalGroup, List <Group> groupsVisible) { if (additionalGroup == null) { return; } List <Group> obj = Pool.GetList <Group>(); net.sv.visibility.GetVisibleFromNear(additionalGroup, obj); for (int i = 0; i < obj.Count; i++) { Group item = obj[i]; if (!groupsVisible.Contains(item)) { groupsVisible.Add(item); } } Pool.FreeList(ref obj); }
// TODO: Replace with vanilla call. private void UpdateSubscriptions(Network.Networkable net) { if (net.subscriber == null) { return; } List <Group> obj = Pool.GetList <Group>(); List <Group> obj2 = Pool.GetList <Group>(); List <Group> obj3 = Pool.GetList <Group>(); net.sv.visibility.GetVisibleFromFar(net.group, obj3); AddVisibleFromNear(net, net.secondaryGroup, obj3); net.subscriber.subscribed.Compare(obj3, obj, obj2, null); for (int i = 0; i < obj2.Count; i++) { Group group = obj2[i]; net.subscriber.Unsubscribe(group); if (net.handler != null) { net.handler.OnNetworkGroupLeave(group); } } for (int j = 0; j < obj.Count; j++) { Group group2 = obj[j]; net.subscriber.Subscribe(group2); if (net.handler != null) { net.handler.OnNetworkGroupEnter(group2); } } Pool.FreeList(ref obj); Pool.FreeList(ref obj2); Pool.FreeList(ref obj3); }