Example #1
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);
        }
Example #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 (EmitterElapsedTime > Layer.EmitterCurveX.TimeLen)
            {
                CurveEmitDone = true;
            }

            if (CurveEmitDone)
            {
                return(0);
            }

            return(needToEmit);
        }