Ejemplo n.º 1
0
    public GameObject SpawnObjectFromPool(ObjectType objectType, Vector3 position, Quaternion rotation)
    {
        if (!m_objectPoolDictionary.ContainsKey(objectType))
        {
            Debug.LogError("Pool of " + objectType + " dosen't exist.");
            return(null);
        }

        if (m_objectPoolDictionary[objectType].Count == 0)
        {
            Debug.LogError(objectType.ToString() + " pool is empty!");
            return(null);
        }

        GameObject objectToSpawn = m_objectPoolDictionary[objectType].Dequeue();

        objectToSpawn.transform.position = position;
        objectToSpawn.transform.rotation = rotation;
        objectToSpawn.SetActive(true);

        PoolTracker poolTracker = AddPoolTrackerComponent(objectToSpawn, PoolType.ObjectType);

        poolTracker.ObjectType = objectType;
        m_trackedObject.Enqueue(poolTracker);

        return(objectToSpawn);
    }
Ejemplo n.º 2
0
    void CheckPoolTrackerOnResetObject(GameObject objectToReturn)
    {
        PoolTracker poolTracker = objectToReturn.GetComponent <PoolTracker>();

        if (poolTracker != null)
        {
            Destroy(poolTracker);
        }
    }
Ejemplo n.º 3
0
    PoolTracker AddPoolTrackerComponent(GameObject objectToSpawn, PoolType poolType)
    {
        // PoolTracker poolTracker = objectToSpawn.GetComponent<PoolTracker>();
        // if(poolTracker == null){
        PoolTracker poolTracker = objectToSpawn.AddComponent <PoolTracker>().GetComponent <PoolTracker>();

        // }
        poolTracker.PoolType = poolType;
        return(poolTracker);
    }
Ejemplo n.º 4
0
 public void On_ReturnAllInPool()
 {
     for (int i = 0, l = m_trackedObject.Count; i < l; ++i)
     {
         PoolTracker poolTracker = m_trackedObject.Dequeue();
         if (poolTracker != null)
         {
             poolTracker.ResetTrackedObject();
         }
     }
 }
Ejemplo n.º 5
0
        public void StartService()
        {
            Log.Message(LogLevel.Info, "[OnStart] - Starting pool service...");

            Log.Message(LogLevel.Info, "[OnStart] - Opening service host...");
            _serviceHost = new ServiceHost(typeof(PoolDataService));
            _serviceHost.Open();

            Log.Message(LogLevel.Info, "[OnStart] - Starting pool tracker...");
            _cancellationTokenSource = new CancellationTokenSource();
            _poolProcessor           = new PoolTracker(_cancellationTokenSource.Token);
            _poolProcessor.Start();

            Log.Message(LogLevel.Info, "[OnStart] - Pool service started.");
        }