public NodeMultiMap <CK, NT> GetNodeMultiMap <CK, NT> () where CK : Component where NT : Node, new() { Type compClass = typeof(CK); Type nodeClass = typeof(NT); if (families.ContainsKey(nodeClass)) { Family <NT> family = (Family <NT>)families[nodeClass]; return(family.GetMultiMap <CK>()); } Family <NT> newFamily = new Family <NT>(nodeClass, this); families[nodeClass] = newFamily; NodeMultiMap <CK, NT> newMultiMap = newFamily.GetMultiMap <CK>(); foreach (Entity entity in entities.mEntitys) { newFamily.AddIfMatch(entity); } return(newMultiMap); }
public NodeMultiMap <CK, NT> GetMultiMap <CK>() where CK : Component { if (multimaps.ContainsKey(typeof(CK))) { NodeMultiMap <CK, NT> multimap = (NodeMultiMap <CK, NT>)multimaps[typeof(CK)]; return(multimap); } else { NodeMultiMap <CK, NT> newMultiMap = new NodeMultiMap <CK, NT>(); foreach (NT node in nodes.mNodes) { newMultiMap.Add(node); } multimaps.Add(typeof(CK), (INodeMultiMap)newMultiMap); return(newMultiMap); } }