/// <summary> /// Add new object to pool /// </summary> /// <param name="poolObject">Pool objects interface</param> public void AddPoolObject(KS_IPoolObject poolObject) { KS_IPoolObject data; if (!pool.TryGetValue(poolObject._Id, out data)) { // check pooling limits for Debug.Log("A: " + GetAmountOfType(poolObject.PoolSettings().tag) + " T: " + poolObject.PoolSettings().poolLimit); if (GetAmountOfType(poolObject.PoolSettings().tag) > (poolObject.PoolSettings().poolLimit - 1)) { RemovePoolItem(poolObject.GameObject); return; } else { poolObject.GameObject.transform.parent = _inactive.transform; pool.Add(poolObject._Id, poolObject); poolObject.GameObject.SetActive(false); } } else { } }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Q) || KS_Input.GetKeyDown(KS_Input.DS4ButtonToKey(DS4KeyCode.Square))) { Spawn(); } if (Input.GetKeyDown(KeyCode.F) || KS_Input.GetKeyDown(KS_Input.DS4ButtonToKey(DS4KeyCode.Triangle))) { ClearPool(); } string text = ""; for (int i = 0; i < spawnObjects.Length; i++) { KS_IPoolObject o = spawnObjects[i].GetComponent <KS_IPoolObject>(); text += o.PoolSettings().tag + ": Active in scene (" + GetAmountOfType(o.PoolSettings().tag) + ") ---- In pool (" + pool.GetAmountOfType(o.PoolSettings().tag) + ")\n"; } wallText.text = text; }