Esempio n. 1
0
        void LateUpdate()
        {
            if (!UpdateWhenOffScreen && !IsInCameraView() && !EditView)
            {
                return;
            }

            UpdateMeshObj();

            if (ElapsedTime > LifeTime && LifeTime >= 0)
            {
                DoFinish();
            }
            else if (LifeTime < 0 && EflList.Count > 0)
            {
                //Xffect LifeTime < 0, 且又是EmitByRate的话,会自动判断是否已经没有活动节点,没有则自动Deactive()。
                float deltaTime      = (float)(CurTime - LastTime);
                bool  allEfLFinished = true;

                for (int i = 0; i < EflList.Count; i++)
                {
                    EffectLayer el = EflList[i];
                    if (!el.EmitOver(deltaTime))
                    {
                        allEfLFinished = false;
                    }
                }

                if (allEfLFinished)
                {
                    DoFinish();
                }
            }
        }
Esempio n. 2
0
        void LateUpdate()
        {
            //make sure each mesh position is always zero.
            for (int i = 0; i < MeshList.Count; i++)
            {
                GameObject obj = MeshList[i];
                if (obj != null)
                {
                    obj.transform.position = Vector3.zero;
                    obj.transform.rotation = Quaternion.identity;
                }
            }


            for (int i = 0; i < MatList.Count; i++)
            {
                VertexPool vp = MatList[i];
                vp.LateUpdate();
            }


            if (ElapsedTime > LifeTime && LifeTime >= 0)
            {
                DoFinish();
            }
            else if (LifeTime < 0 && EflList.Count > 0)
            {
                //Xffect LifeTime < 0, 且又是EmitByRate的话,会自动判断是否已经没有活动节点,没有则自动Deactive()。
                float deltaTime      = (float)(CurTime - LastTime);
                bool  allEfLFinished = true;

                for (int i = 0; i < EflList.Count; i++)
                {
                    EffectLayer el = EflList[i];
                    if (!el.EmitOver(deltaTime))
                    {
                        allEfLFinished = false;
                    }
                }

                if (allEfLFinished)
                {
                    DoFinish();
                }
            }
        }
Esempio n. 3
0
        void LateUpdate()
        {
            //make sure each mesh position is always zero.
            for (int i = 0; i < MeshList.Count; i++)
            {
                GameObject obj = MeshList[i];
                if (obj != null)
                {
                    obj.transform.position = Vector3.zero;
                    obj.transform.rotation = Quaternion.identity;
                }
            }


            if (MergeSameMaterialMesh)
            {
                //ElementAt() STILL CAUSE GC ALLOC!! SO WE CAN'T AVOID GC ALLOC IN DICTIONARY?
                //for (int i = 0; i < MatDic.Count; i++)
                //{
                //    KeyValuePair<string,VertexPool> pair = MatDic.ElementAt(i);
                //    pair.Value.LateUpdate();
                //}

                foreach (KeyValuePair <string, VertexPool> pair in MatDic)
                {
                    pair.Value.LateUpdate();
                }
            }
            else
            {
                for (int i = 0; i < MatList.Count; i++)
                {
                    VertexPool vp = MatList[i];
                    vp.LateUpdate();
                }
            }

            if (ElapsedTime > LifeTime && LifeTime >= 0)
            {
                DoFinish();
            }
            else if (LifeTime < 0 && EflList.Count > 0)
            {
                //Xffect LifeTime < 0, 且又是EmitByRate的话,会自动判断是否已经没有活动节点,没有则自动Deactive()。
                float deltaTime      = (float)(CurTime - LastTime);
                bool  allEfLFinished = true;

                for (int i = 0; i < EflList.Count; i++)
                {
                    EffectLayer el = EflList[i];
                    if (!el.EmitOver(deltaTime))
                    {
                        allEfLFinished = false;
                    }
                }

                if (allEfLFinished)
                {
                    DoFinish();
                }
            }
        }