示例#1
0
        public void Tick(float deltaTime)
        {
            mElapsedTime += deltaTime;

            if (TimeScaleEnabled)
            {
                deltaTime *= TimeScaleCurve.Evaluate(mElapsedTime);
            }

            int needToAdd = emitter.GetNodes(deltaTime);

            AddNodes(needToAdd);

            for (int i = 0; i < MaxENodes; i++)
            {
                EffectNode node = ActiveENodes[i];
                if (node == null)
                {
                    continue;
                }
                node.Update(deltaTime);
            }

//             if (RenderType == (int)ERenderType.Rope)
//                 RopeDatas.Update(deltaTime);
        }
示例#2
0
        protected int EmitByCurve(float deltaTime)
        {
            XCurveParam curve = Layer.EmitterCurveX;

            if (curve == null)
            {
                Debug.LogWarning("emitter hasn't set a curve yet!");
                return(0);
            }

            EmitterElapsedTime += deltaTime;

            int numToEmit = (int)curve.Evaluate(EmitterElapsedTime) - m_emitCount;;

            int needToEmit = 0;

            if (numToEmit > Layer.AvailableNodeCount)
            {
                needToEmit = Layer.AvailableNodeCount;
            }
            else
            {
                needToEmit = numToEmit;
            }
            if (needToEmit < 0)
            {
                needToEmit = 0;
            }

            m_emitCount += needToEmit;

            ////if there haven't any node be emitted during 1 second, then we assume it's over.
            //if (needToEmit == 0)
            //{
            //    m_curveCountTime += deltaTime;
            //    if (m_curveCountTime > 1f)
            //        CurveEmitDone = true;
            //}
            //else
            //    m_curveCountTime = 0f;

            if (EmitterElapsedTime > Layer.EmitterCurveX.TimeLen)
            {
                CurveEmitDone = true;
            }


            if (CurveEmitDone)
            {
                return(0);
            }

            return(needToEmit);
        }
示例#3
0
        protected int EmitByCurve(float deltaTime)
        {
            XCurveParam curve = Layer.EmitterCurveX;

            if (curve == null)
            {
                Debug.LogWarning("emitter hasn't set a curve yet!");
                return(0);
            }

            EmitterElapsedTime += deltaTime;

            int numToEmit  = (int)curve.Evaluate(EmitterElapsedTime) - m_emitCount;;
            int needToEmit = 0;

            if (numToEmit > Layer.AvailableNodeCount)
            {
                needToEmit = Layer.AvailableNodeCount;
            }
            else
            {
                needToEmit = numToEmit;
            }
            if (needToEmit < 0)
            {
                needToEmit = 0;
            }

            m_emitCount += needToEmit;

            if (EmitterElapsedTime > Layer.EmitterCurveX.TimeLen)
            {
                CurveEmitDone = true;
            }

            if (CurveEmitDone)
            {
                return(0);
            }

            return(needToEmit);
        }