protected override void OnInstanced() { base.OnInstanced(); //先变换类型,减少转换GC m_PtrUpdateActiveEntity = UF_UpdateActiveEntity; m_PtrUpdatePoolEntity = UF_UpdatePoolEntity; m_PtrFixedUpdateActiveEntity = UF_FixedUpdateActiveEntity; }
private void UF_DoForeach(K key, DelegateNForeach <T> method) { if (!m_MapNodes.ContainsKey(key) || m_MapNodes[key] == null) { return; } if (method == null) { return; } Node <T> head = m_MapNodes[key]; Node <T> node = head; Node <T> last = null; if (node.next == null) { if (!method(node.refer)) { this.UF_RecoverNode(node); UF_DeleteKeys(key); } return; } last = node; while (node != null) { if (!method(node.refer)) { if (node == head) { m_MapNodes[key] = node.next; head = node.next; node.next = null; UF_RecoverNode(node); node = head; last = node; } else { last.next = node.next; node.next = null; UF_RecoverNode(node); node = last.next; } } else { last = node; node = node.next; } } }
/// <summary> /// 清空全部节点 /// </summary> public void UF_NForeachClear(DelegateNForeach <T> method) { Node <T> node = m_Head; while (node != null) { if (method != null) { method(node.refer); } node = node.next; } UF_Clear(); }
public T UF_Select(K key, DelegateNForeach <T> method) { if (method != null && m_MapNodes.ContainsKey(key) && m_MapNodes [key] != null) { Node <T> node = m_MapNodes [key]; while (node != null) { if (method(node.refer)) { return(node.refer); } } } return(default(T)); }
//根据条件筛选 public T UF_Select(DelegateNForeach <T> method) { if (method != null && m_Head != null) { Node <T> node = m_Head; while (node != null) { if (method(node.refer)) { return(node.refer); } node = node.next; } } return(default(T)); }
/// <summary> /// 清空全部节点 /// </summary> public void UF_NForeachClear(DelegateNForeach <T> method) { foreach (K key in m_MapNodes.Keys) { Node <T> node = m_MapNodes[key]; while (node != null) { if (method != null) { method(node.refer); } node = node.next; } } UF_Clear(); }
/// <summary> ///循环每个节点 ///如果mehod 返回false,则删除该节点 /// </summary> public void UF_NForeach(DelegateNForeach <T> method) { if (method == null || m_Head == null) { return; } Node <T> node = m_Head; Node <T> last = null; if (node.next == null) { if (!method(node.refer)) { this.UF_RecoverNode(node); m_Head = null; } return; } last = node; while (node != null) { if (!method(node.refer)) { if (node == m_Head) { m_Head = node.next; node.next = null; UF_RecoverNode(node); node = m_Head; last = node; } else { last.next = node.next; node.next = null; UF_RecoverNode(node); node = last.next; } } else { last = node; node = node.next; } } }
/// <summary> ///循环每个节点 ///如果mehod 返回false,则删除该节点 /// </summary> public void UF_NForeach(DelegateNForeach <T> method) { if (method == null) { return; } List <K> tempList = ListCache <K> .Acquire(); foreach (var item in m_MapNodes) { if (item.Value != null) { tempList.Add(item.Key); } } for (int k = 0; k < tempList.Count; k++) { UF_DoForeach(tempList[k], method); } ListCache <K> .Release(tempList); }
public void NForeach(K key, DelegateNForeach <T> method) { UF_DoForeach(key, method); }
//筛选选择 public IEntityHnadle UF_Select(DelegateNForeach <IEntityHnadle> entity) { return(m_ListActive.UF_Select(entity)); }