/** * Returns a pooled missile */ public Missile GetMissile(Enum.FlyingObject flyingObject) { if (this.missileObjectPool.ContainsKey(flyingObject)) { for (var index = 0; index < this.missileObjectPool[flyingObject].Count; index++) { if (!this.missileObjectPool[flyingObject][index].IsActive()) { return(this.missileObjectPool[flyingObject][index]); } } } return(this.AddMissileToObjectPool(flyingObject)); }
/** * Adds a missile to the object pool by the given flying object */ private Missile AddMissileToObjectPool(Enum.FlyingObject flyingObject) { var flyingObjectIndex = (int)flyingObject; var missileGameObject = Instantiate(missilePrefabs[flyingObjectIndex]) as GameObject; missileGameObject.name = this.missilePrefabs[flyingObjectIndex].name; missileGameObject.transform.SetParent(this.missileContainer, false); var missile = missileGameObject.GetComponent <Missile>(); if (!this.missileObjectPool.ContainsKey(flyingObject)) { this.missileObjectPool.Add(flyingObject, new List <Missile>()); } this.missileObjectPool[flyingObject].Add(missile); return(missile); }