public bool SpawnEntityComponent(out List <EntityComponent> entityComponents, IEntityComponentSpawner spawner, Entity recipient = null) { entityComponents = new List <EntityComponent>(); if (!CanHaveMoreOffspring(spawner)) { return(false); } if (recipient == null) { //CREATE PICKUP return(true); } foreach (EntityComponent component in spawner.GetEntityComponents()) { EntityComponent newEntityComponent = recipient.GetGameObject().AddComponent(component.GetType()) as EntityComponent; ReflectionUtil.CopyObjectValues(component, newEntityComponent); spawner.onSpawn.Invoke(spawner, newEntityComponent); entityComponents.Add(newEntityComponent); } return(entityComponents.Count > 0); }