public NodeMap <CK, NT> GetNodeMap <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.GetMap <CK>()); } Family <NT> newFamily = new Family <NT>(nodeClass, this); families[nodeClass] = newFamily; NodeMap <CK, NT> newMap = newFamily.GetMap <CK>(); foreach (Entity entity in entities.mEntitys) { newFamily.AddIfMatch(entity); } return(newMap); }
public NodeMap <CK, NT> GetMap <CK>() where CK : Component { if (maps.ContainsKey(typeof(CK))) { NodeMap <CK, NT> map = (NodeMap <CK, NT>)maps[typeof(CK)]; return(map); } else { NodeMap <CK, NT> newMap = new NodeMap <CK, NT>(); foreach (NT node in nodes.mNodes) { newMap.Add(node); } maps.Add(typeof(CK), (INodeMap)newMap); return(newMap); } }