示例#1
0
 /// <summary>
 /// retourne vrai si il y a un objet du type tag dans les collisions
 /// </summary>
 /// <param name="objectInArray"></param>
 /// <returns></returns>
 private bool IsThereCollisionWithThis(GameData.Prefabs objectInArray)
 {
     for (int i = 0; i < colliderNormalArray.Length; i++)
     {
         if (objectInCollision[i] && objectInCollision[i].CompareTag(objectInArray.ToString()))
         {
             return(true);
         }
     }
     return(false);
 }
示例#2
0
    /// <summary>
    /// access object from pool
    /// </summary>
    public GameObject SpawnFromPool(GameData.Prefabs tag, Vector3 position, Quaternion rotation, Transform parent)
    {
        if (!poolDictionary.ContainsKey(tag))
        {
            Debug.Log("pool with tag: " + tag + "doesn't exist");
            return(null);
        }

        List <GameObject> objFromTag = poolDictionary[tag];

        for (int i = 0; i < objFromTag.Count; i++)
        {
            if (objFromTag[i] && !objFromTag[i].activeSelf)
            {
                //ici on récupère un objet de la pool !

                objFromTag[i].SetActive(true);
                objFromTag[i].transform.position = position;
                objFromTag[i].transform.rotation = rotation;
                objFromTag[i].transform.SetParent(parent);

                IPooledObject pooledObject = objFromTag[i].GetComponent <IPooledObject>();

                if (pooledObject != null)
                {
                    pooledObject.OnObjectSpawn();
                }

                return(objFromTag[i]);
            }
        }

        Debug.Log("ici on a raté ! tout les objets de la pools sont complet !!");
        for (int i = 0; i < pools.Count; i++)
        {
            if (pools[i].tag == tag)
            {
                if (pools[i].shouldExpand)
                {
                    GameObject obj = Instantiate(pools[i].prefab, transform);
                    //obj.SetActive(false);
                    objFromTag.Add(obj);


                    obj.SetActive(true);
                    obj.transform.position = position;
                    obj.transform.rotation = rotation;
                    obj.transform.SetParent(parent);

                    IPooledObject pooledObject = obj.GetComponent <IPooledObject>();

                    if (pooledObject != null)
                    {
                        pooledObject.OnObjectSpawn();
                    }

                    return(obj);
                }
                else
                {
                    Debug.LogError("pas d'expantion, error");

                    break;
                }
            }
        }


        return(null);
    }