Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }