public static Entity AddEntity() { Entity newEntity; if (removed.Count > 0) //allocates empty/deallocated spaces in entities { Entity oldEntity = removed.Pop(); ushort oldEntityIndex = oldEntity.Index; ushort oldEntityGen = oldEntity.Gen; newEntity = oldEntity.SetGen((ushort)(oldEntityGen + 1)); ApiProvider.AddEntityToScene(newEntity); entities[oldEntityIndex] = newEntity; } else //adds entity by increasing entity list size { newEntity = Entity.Create((ushort)entities.Count, BASE_GEN); ApiProvider.AddEntityToScene(newEntity); entities.Add(newEntity); } newEntity.AddComponent <Parent>(); return(newEntity); }