/// <summary> /// stores an object in the pool, removing it from the game world /// </summary> public void StoreObject(GameObject g) { PoolToken pt = ObjectPool.GetPoolToken(g); SendMessage("PreObjectDeactivate", g, SendMessageOptions.DontRequireReceiver); g.BroadcastMessage("OnObjectPoolDestroy", SendMessageOptions.DontRequireReceiver); g.BroadcastMessage("OnObjectPoolDelete", SendMessageOptions.DontRequireReceiver); if (transform.childCount > MaxPoolSize) { pt.usable = false; Destroy(g); } else { g.BroadcastMessage("OnDestroy", SendMessageOptions.DontRequireReceiver); g.SetActive(false); g.transform.parent = transform; g.transform.position = Vector3.zero; g.transform.rotation = Quaternion.identity; } deletePlayerObject(g); ManagedObjects.RemoveManagedObject(g); SendMessage("PostObjectDeactivate", g, SendMessageOptions.DontRequireReceiver); }