// Use this for initialization void OnDisable() { mSwordEffectList.Clear (); mLastCollect = null; }
// Update is called once per frame void LateUpdate() { if (mSwordPt == null || mSwordPt.HeadPt == null || mSwordPt.TailPt == null) return; SwordEffectPt effectPt = null; switch(mCollectionType) { case SwordEffectCollectionType.FrameInterval: if (mSwordEffectList.Count < mMaxSwordEffectPt && IsCollection == true) { effectPt = new SwordEffectPt(); } else if(0 < mSwordEffectList.Count) { effectPt = mSwordEffectList.Dequeue(); } if (IsCollection == true) { if (mSwordEffectList.Count == 0) { effectPt.HeadPt = mSwordPt.HeadPt.position; effectPt.TailPt = mSwordPt.TailPt.position; } else { effectPt.HeadPt = Smooth(mLastCollect.HeadPt, mSwordPt.HeadPt.position); effectPt.TailPt = Smooth(mLastCollect.TailPt, mSwordPt.TailPt.position); } effectPt.LifeTime = Time.time; mLastCollect = effectPt; mSwordEffectList.Enqueue (effectPt); } break; case SwordEffectCollectionType.TimeInterval: while(mSwordEffectList.Count != 0) { if(mDiscardLength <= Time.time - mSwordEffectList.Peek().LifeTime) mSwordEffectList.Dequeue(); else break; } if (IsCollection == true) { if (mSwordEffectList.Count == 0) { if (effectPt == null) effectPt = new SwordEffectPt(); effectPt.HeadPt = mSwordPt.HeadPt.position; effectPt.TailPt = mSwordPt.TailPt.position; effectPt.LifeTime = Time.time; mLastCollect = effectPt; mSwordEffectList.Enqueue (effectPt); } else if( 0.1F < Vector3.Distance(mSwordPt.HeadPt.position, mLastCollect.HeadPt) || 0.1F < Vector3.Distance(mSwordPt.TailPt.position, mLastCollect.TailPt)) { if (effectPt == null) effectPt = new SwordEffectPt(); effectPt.HeadPt = Smooth(mLastCollect.HeadPt, mSwordPt.HeadPt.position); effectPt.TailPt = Smooth(mLastCollect.TailPt, mSwordPt.TailPt.position); effectPt.LifeTime = Time.time; mLastCollect = effectPt; mSwordEffectList.Enqueue (effectPt); } else { mLastCollect.LifeTime = Time.time; } } break; } }