Beispiel #1
0
    public void ObjectPool_ObserverReceivesDespawnedEvent()
    {
        var numToSpawn = 3;
        var poolSize   = 5;
        var observer   = new TestPoolObserver();
        var parent     = new GameObject();
        var pool       = new ObjectPool <TestComponent>(parent, parent, poolSize, observer);

        var spawnedItems = new Queue <TestComponent>();

        for (int i = 0; i < numToSpawn; i++)
        {
            var item = pool.Spawn(Vector3.zero, Quaternion.identity);
            spawnedItems.Enqueue(item);
        }

        for (int i = 0; i < numToSpawn; i++)
        {
            var item = spawnedItems.Dequeue();
            pool.Despawn(item);

            Assert.IsTrue(observer.LastItemDespawned == item);
            Assert.IsTrue(observer.LastPool == pool);
        }

        Assert.IsTrue(observer.ItemDespawnedCount == numToSpawn);
        Assert.IsTrue(pool.Count >= numToSpawn);
    }
Beispiel #2
0
    public void ObjectPool_ObserverReceivesCreatedEvent()
    {
        var poolSize = 5;
        var observer = new TestPoolObserver();
        var parent   = new GameObject();
        var pool     = new ObjectPool <TestComponent>(parent, parent, poolSize, observer);

        Assert.IsTrue(observer.ItemCreatedCount == poolSize);
        Assert.IsTrue(observer.ItemSpawnedCount == 0);
        Assert.IsTrue(observer.ItemDespawnedCount == 0);
        Assert.IsTrue(observer.LastItemCreated != null);
    }
Beispiel #3
0
    public void ObjectPool_UnspawnedItemIsInactive()
    {
        var poolSize = 5;
        var observer = new TestPoolObserver();
        var parent   = new GameObject();
        var pool     = new ObjectPool <TestComponent>(parent, parent, poolSize, observer);

        Assert.IsFalse(observer.LastItemCreated.isActiveAndEnabled);

        var item = pool.Spawn(Vector3.zero, Quaternion.identity);

        Assert.IsTrue(observer.LastItemSpawned.isActiveAndEnabled);

        item.Despawn();

        Assert.IsFalse(observer.LastItemDespawned.isActiveAndEnabled);
    }