Esempio n. 1
0
 // Use this for initialization
 void OnDisable()
 {
     mSwordEffectList.Clear ();
     mLastCollect = null;
 }
Esempio n. 2
0
    // 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;
        }
    }