Example #1
0
 private void DoFlags(RetrievedObjectData getObject, List <PoolingFlags> flags)
 {
     if (flags.Contains(PoolingFlags.POSITION_TO_ZERO))
     {
         getObject.retrievedObject.transform.position = Vector3.zero;
     }
 }
Example #2
0
        public GameObject RetrieveOrCreate(int objectType)
        {
            RetrievedObjectData getObject = Retrieve(objectType, RetrieveMethod.BOTTOM);

            //if it found an object in the pooling list, return it and set it to occupied
            if (getObject.retrievedObject.isNotNull())
            {
                return(SetupRetrieved(objectType, getObject));
            }

            //if the pooler did not find an object, and does not allow spawning anymore objects in to replace it, return a null object
            if (!getObject.allowSpawning)
            {
                return(null);
            }

            //if it cannot be retrieved because the object pooler requires it to be instantiated
            if (getObject.retrievedObject.isNull())
            {
                getObject = new RetrievedObjectData()
                {
                    retrievedObject = Create(objectType)
                }
            }
            ;

            return(SetupRetrieved(objectType, getObject));
        }
Example #3
0
        //sets up the retrieved object in the pool
        private GameObject SetupRetrieved(int objectType, RetrievedObjectData getObject)
        {
            //sets the availability to occupied now that the specific object is being used
            SetAvailabilityInPool(objectType, getObject.retrievedObject, PoolingAvailability.OCCUPIED);

            //do any pooling flags that the object settings define
            List <PoolingFlags> poolingFlags = GetSettingsFlags(objectType);

            if (getObject.retrievedObject.isNotNull() && poolingFlags.Count > 0)
            {
                DoFlags(getObject, poolingFlags);
            }

            return(getObject.retrievedObject);
        }