Пример #1
0
    /**
     * 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));
    }
Пример #2
0
    /**
     * 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);
    }