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); }
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); }