Example #1
0
        /// <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);
        }