Exemple #1
0
        public void Add <T>()
        {
            Type t = typeof(T);

            if (internalTypeIDLookup.ContainsKey(t))
            {
                return;
            }

            int idx = internalTypeIDLookup.Count;

            if (lookupGaps.First != null)
            {
                idx = lookupGaps.First.Value;
                lookupGaps.RemoveFirst();
            }

            internalTypeIDLookup.Add(t, idx);

            if (idx >= internalTypeLookup.Length)
            {
                Array.Resize(ref internalTypeLookup, internalTypeLookup.Length * 2);
            }

            internalTypeLookup[idx] = t;
            signature.AddValue(idx);
        }
Exemple #2
0
        public int CreateEntity()
        {
            int ent;

            if (gaps.First != null)
            {
                ent = gaps.First.Value;
                gaps.RemoveFirst();
            }
            else
            {
                ent = EntityCount;
            }

            entities.AddValue(ent);
            OnEntityCreated?.Invoke(ent);
            return(ent);
        }