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); }
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); }