IEnumerator SmartInitZoo() { int order = 1; while (added < init.Count && order <= max_order) { for (int i = 0; i < init.Count; i++) { Poolette p = init[i]; if (zoo.ContainsKey(p.name)) { added++; continue; } if (p.order == order) { Pool pool = new Pool(p.name, p.count); pool.non_refundable = p.non_refundable; pool.require_explicit_return = p.require_explicit_return; int need = p.count; foreach (GameObject obj in p.objects) { // Debug.Log("PREADDED " + p.name + "\n"); SetObject(obj, ref pool, p.name); need--; } while (need > 0) { AddToPool(ref pool, p.name, 1); need--; yield return(new WaitForEndOfFrame()); } if (!zoo.ContainsKey(p.name)) { zoo.Add(p.name, pool); } added++; } } order++; } // Debug.Log("Done with smarrt init\n"); yield return(null); }
public void InitZoo() { // ORDER 0 IS MANDATORY BEFORE LEVEL STARTS for (int i = 0; i < init.Count; i++) { Poolette p = init[i]; if (p.order > max_order) { max_order = p.order; } if (p.order > 0) { continue; } if (zoo.ContainsKey(p.name)) { added++; continue; } Pool pool = new Pool(p.name, p.count); pool.non_refundable = p.non_refundable; pool.require_explicit_return = p.require_explicit_return; int need = p.count; foreach (GameObject obj in p.objects) { // Debug.Log("PREADDED " + p.name + "\n"); SetObject(obj, ref pool, p.name); need--; } if (need > 0) { AddToPool(ref pool, p.name, need); } if (pool.count > 0) { // Debug.Log("Added " + p.name + " to zoo\n"); zoo.Add(p.name, pool); } added++; } }