/// <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); }
/// <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); }