示例#1
0
    public IEnumerator 풀링_기본테스트()
    {
        CManagerPooling <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = InitGeneratePoolingTest();

        Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);
        Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

        List <GameObject> listObjectPooling = new List <GameObject>();

        for (int i = 0; i < 10; i++)
        {
            listObjectPooling.Add(pPoolingManager.DoPop(ETestPoolingObjectName.Test1).gameObject);
        }
        Assert.AreEqual(10, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);

        for (int i = 0; i < 10; i++)
        {
            pPoolingManager.DoPush(listObjectPooling[i].GetComponent <TestPoolingObject>());
        }
        Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);

        listObjectPooling.Clear();
        for (int i = 0; i < 5; i++)
        {
            listObjectPooling.Add(pPoolingManager.DoPop(ETestPoolingObjectName.Test2).gameObject);
        }
        Assert.AreEqual(5, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

        pPoolingManager.DoPushAll();
        Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

        yield break;
    }
    /* protected - Override & Unity API         */

    protected override void OnAwake()
    {
        base.OnAwake();

        _pManagerPool_LabelIndicator = CManagerPooling <ELabelIndicator, CResource_NGUILabelIndicator> .instance;
        _pTrans_Manager = _pManagerPool_LabelIndicator.p_pObjectManager.transform;
        _pTrans_Label   = transform;

        UIWidget pUIWidget = GetComponent <UIWidget>();

        if (pUIWidget != null)
        {
            _iLastDepth = pUIWidget.depth + 1;
        }
        else
        {
            pUIWidget = GetComponentInParent <UIWidget>();
            if (pUIWidget != null)
            {
                _iLastDepth = pUIWidget.depth + 1;
            }
        }

        _sInfoIndicator.v2Direction   = ProcGetEnumToDirection(p_eDirection);
        _sInfoIndicator.iFontSize     = p_iFontSize;
        _sInfoIndicator.pColor        = p_sColorIndicator;
        _sInfoIndicator.fDistance     = p_fDistance;
        _sInfoIndicator.fDuration     = p_fDuration;
        _sInfoIndicator.fFadeDelay    = p_fFadeDelay;
        _sInfoIndicator.fFadeDuration = p_fFadeDuration;
        _sInfoIndicator.OnDisable     = OnPushResource_LabelIndicator;
    }
    /* public - [Event] Function
     * 프랜드 객체가 호출                       */

    // ========================================================================== //

    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출                         */

    /* protected - Override & Unity API         */

    protected override void OnAwake()
    {
        base.OnAwake();

        _pManagerPooling = CManagerPooling <string, CEffect> .instance;
        _pManagerPooling.DoInitPoolingObject("Effect");
        _pManagerPooling.p_EVENT_OnPopResource += _pManagerPooling_p_EVENT_OnPopResource;
    }
示例#4
0
 // Use this for initialization
 void Start()
 {
     _pManagerPool_Bullet = CManagerPooling <Pooling_BulletTest.ProjectileModel, Pooling_BulletTest> .instance;
     _pManagerPool_Bullet.p_EVENT_OnMakeResource += _pManagerPool_Bullet_p_EVENT_OnMakeResource;
     _pManagerPool_Bullet.p_EVENT_OnPopResource  += _pManagerPool_Bullet_p_EVENT_OnPopResource;
     _pManagerPool_Bullet.DoStartPooling(new List <Pooling_BulletTest.ProjectileModel>()
     {
         Pooling_BulletTest.ProjectileModel.Model_Projectile_Blue
     }, 10);
 }
示例#5
0
    public IEnumerator 풀링_이벤트테스트()
    {
        g_mapMakeCount = new Dictionary <ETestPoolingObjectName, int>()
        {
            { ETestPoolingObjectName.Test3, 0 }
        };
        g_mapPopCount = new Dictionary <ETestPoolingObjectName, int>()
        {
            { ETestPoolingObjectName.Test3, 0 }
        };
        g_mapPushCount = new Dictionary <ETestPoolingObjectName, int>()
        {
            { ETestPoolingObjectName.Test3, 0 }
        };
        CManagerPooling <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = InitGeneratePoolingTest();

        pPoolingManager.p_EVENT_OnMakeResource += PPoolingManager_p_EVENT_OnMakeResource;
        pPoolingManager.p_EVENT_OnPopResource  += PPoolingManager_p_EVENT_OnPopResource;
        pPoolingManager.p_EVENT_OnPushResource += PPoolingManager_p_EVENT_OnPushResource;

        int iTotalMakeCount = Random.Range(15, 50);

        for (int i = 0; i < iTotalMakeCount; i++)
        {
            pPoolingManager.DoPop(ETestPoolingObjectName.Test3);
        }

        Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], 0);

        pPoolingManager.DoPushAll();

        Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount);

        for (int i = 0; i < iTotalMakeCount; i++)
        {
            pPoolingManager.DoPop(ETestPoolingObjectName.Test3);
        }

        Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);
        Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount);

        pPoolingManager.DoPushAll();

        Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
        Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);
        Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);

        yield break;
    }
    /* public - [Event] Function
     * 프랜드 객체가 호출(For Friend class call)*/

    // ========================================================================== //

    #region Protected

    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출(For Child class call)		*/

    /* protected - Override & Unity API         */

    protected override void OnAwake()
    {
        base.OnAwake();

        GetComponentsInChildren(_listScrollObject_Origin);
        if (_listScrollObject_Origin.Count == 0)
        {
            Debug.Log(name + "_listScrollObject.Count == 0", this);
            enabled = false;
            return;
        }

        List <GameObject> listObject = new List <GameObject>();

        for (int i = 0; i < _listScrollObject_Origin.Count; i++)
        {
            if (_listScrollObject_Origin[i].p_fWidth == 0f)
            {
                Debug.LogWarning(name + "Scroll Object의 Width는 0이 될 수 없습니다. 해당 Scroll Object : " + _listScrollObject_Origin[i].name, _listScrollObject_Origin[i]);
                gameObject.SetActive(false);
                return;
            }

            listObject.Add(_listScrollObject_Origin[i].gameObject);
        }

        int iInstanceID = GetInstanceID();

        CManagerRandomTable <CScrollObject> .instance[iInstanceID].DoClearRandomItemTable();
        CManagerRandomTable <CScrollObject> .instance[iInstanceID].DoAddRandomItem_Range(_listScrollObject_Origin);
        CManagerPooling <string, CScrollObject> .DoInitPoolingObject(listObject);

        CManagerPooling <string, CScrollObject> .instance.DoStartPooling(p_iPoolingCount, _pTransformCached);

        for (int i = 0; i < _listScrollObject_Origin.Count; i++)
        {
            _listScrollObject_Origin[i].SetActive(false);
        }

        if (p_pTransTarget != null)
        {
            _fTargetPos_Origin = p_pTransTarget.position.x;
        }

        _fOriginPosX = _pTransformCached.position.x;
    }
示例#7
0
    static public void DoSetParents_ManagerObject(Transform pTransformParents)
    {
        CManagerPooling <ENUM_Resource_Name, Class_Resource> pManagerCurrent = instance;

        if (_pTransManager == null)
        {
            _bIsInit        = false; _bIsDestroy = false;
            pManagerCurrent = instance;
            pManagerCurrent.OnMakeSingleton();
        }

        _pTransManager.SetParent(pTransformParents);
        _pTransManager.DoResetTransform();

        if (_queuePoolingDisable.Count != 0)
        {
            var listOrigin = _mapResourceOriginCopy.Values.ToList();
            for (int i = 0; i < listOrigin.Count; i++)
            {
                listOrigin[i].transform.DoResetTransform();
            }
        }
    }
示例#8
0
    private CManagerPooling <ETestPoolingObjectName, TestPoolingObject> InitGeneratePoolingTest()
    {
        TestPoolingObject.g_mapActiveCount = new Dictionary <ETestPoolingObjectName, int>()
        {
            { ETestPoolingObjectName.Test1, 0 }, { ETestPoolingObjectName.Test2, 0 }, { ETestPoolingObjectName.Test3, 0 }
        };

        List <GameObject> listObjectPooling = new List <GameObject>();

        for (int i = 0; i < 3; i++)
        {
            ETestPoolingObjectName eTest = (ETestPoolingObjectName)i;
            GameObject             pObjectOrigin_Test = new GameObject(eTest.ToString());
            pObjectOrigin_Test.gameObject.SetActive(false);
            pObjectOrigin_Test.AddComponent <TestPoolingObject>().eTestType = eTest;
            listObjectPooling.Add(pObjectOrigin_Test.gameObject);
        }

        CManagerPooling <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = CManagerPooling <ETestPoolingObjectName, TestPoolingObject> .instance;

        pPoolingManager.DoInitPoolingObject(listObjectPooling);
        return(pPoolingManager);
    }
示例#9
0
    /* protected - [Event] Function
     * 자식 객체가 호출(For Child class call)		*/

    /* protected - Override & Unity API         */

    protected override void OnAwake()
    {
        base.OnAwake();

        _pManagerPool = CManagerPooling <Enum_Key, Class_Resource> .instance;
    }
示例#10
0
    // ========================================================================== //

    /* public - [Do] Function
     * 외부 객체가 호출(For External class call)*/

    static public void DoClearPoolingObject()
    {
        CManagerPooling <string, CScrollObject> .DoClearPoolingObject();
    }