private IEnumerator TimerToReAddToPool(GenericParticleController particleController) { yield return(new WaitForSeconds(1.5f)); switch (effectType) { case HitEffectType.WOOD: PoolingManager.singleton.hitEffectWood.ReIntergratePoolableObject(particleController); break; case HitEffectType.METAL: PoolingManager.singleton.hitEffectMetal.ReIntergratePoolableObject(particleController); break; case HitEffectType.BLOOD: PoolingManager.singleton.hitEffectConcrete.ReIntergratePoolableObject(particleController); break; case HitEffectType.DIRT: PoolingManager.singleton.hitEffectDirt.ReIntergratePoolableObject(particleController); break; case HitEffectType.CONCRETE: PoolingManager.singleton.hitEffectConcrete.ReIntergratePoolableObject(particleController); break; case HitEffectType.GLASS: PoolingManager.singleton.hitEffectGlass.ReIntergratePoolableObject(particleController); break; } }
public void ObjectHit(Vector3 hitPosition, Vector3 direction) { GenericParticleController particleController = null; switch (effectType) { case HitEffectType.WOOD: particleController = PoolingManager.singleton.hitEffectWood.GetPoolableObject(); break; case HitEffectType.METAL: particleController = PoolingManager.singleton.hitEffectMetal.GetPoolableObject(); break; case HitEffectType.BLOOD: particleController = PoolingManager.singleton.hitEffectBlood.GetPoolableObject(); break; case HitEffectType.DIRT: particleController = PoolingManager.singleton.hitEffectDirt.GetPoolableObject(); break; case HitEffectType.CONCRETE: particleController = PoolingManager.singleton.hitEffectConcrete.GetPoolableObject(); break; case HitEffectType.GLASS: particleController = PoolingManager.singleton.hitEffectGlass.GetPoolableObject(); break; } particleController.transform.position = hitPosition; particleController.transform.rotation = Quaternion.LookRotation(direction); StartCoroutine("TimerToReAddToPool", particleController); }
public void ReIntergratePoolableObject(GenericParticleController particleController) { PoolableParticleItem newItem = new PoolableParticleItem(); newItem.geo = particleController.gameObject; newItem.particleController = particleController; createdPoolableItems.Add(newItem); particleController.transform.SetParent(transform); particleController.transform.localPosition = Vector3.zero; particleController.transform.localRotation = Quaternion.identity; }
public GenericParticleController GetPoolableObject() { if (createdPoolableItems.Count == 0) { Debug.LogError(gameObject.name + " Has no available objects in the pool currently, increase the amount to spawn"); return(null); } GenericParticleController particleController = createdPoolableItems[0].particleController; particleController.transform.SetParent(null); particleController.PlayParticles(); createdPoolableItems.RemoveAt(0); return(particleController); }