Example #1
0
        public bool PreUse(FOnEffectCreated after = null)
        {
            if (State == EEffectState.Valid)
            {
                if (after != null)
                {
                    after(true);
                }
                return(true);
            }
            else if (State == EEffectState.Creating)
            {
                if (after != null)
                {
                    mOnCreatedList.Add(after);
                }
            }
            else if (State == EEffectState.Invalid)
            {
                State = EEffectState.Creating;
                if (after != null)
                {
                    mOnCreatedList.Add(after);
                }

                var un = _CreateEffect();
            }
            return(false);
        }
Example #2
0
 public void SwitchState(EEffectState state)
 {
     State = state;
     if (state == EEffectState.Dead)
     {
         Clear();
     }
 }
Example #3
0
        protected override EBTStatus Execute()
        {
            if (mEffectEntiny == null)
            {
                return(EBTStatus.BT_FAILURE);
            }

            EEffectState pState = mEffectEntiny.State;

            switch (pState)
            {
            case EEffectState.Error:
            {
                return(EBTStatus.BT_FAILURE);
            }

            case EEffectState.Update:
            {
                if (mCacheTransform == null && mEffectEntiny.CacheTransform != null)
                {
                    mCacheTransform = mEffectEntiny.CacheTransform;
                    BTTreeManager.Instance.SaveData(this, JudgeName, mCacheTransform);
                }

                object var = BTTreeManager.Instance.GetData(this, Define.BT_JUDGE_SUCCESS);
                if (var != null && Data.Dead == EFlyObjDeadType.UntilColliderTar)
                {
                    mEffectEntiny.SwitchState(EEffectState.Dead);
                }
                return(EBTStatus.BT_RUNNING);
            }

            case EEffectState.Wait:
            {
                return(EBTStatus.BT_RUNNING);
            }

            case EEffectState.Dead:
            {
                mEffectEntiny = null;
                return(EBTStatus.BT_SUCCESS);
            }

            default:
            {
                return(EBTStatus.BT_FAILURE);
            }
            }
            return(EBTStatus.BT_FAILURE);
        }
Example #4
0
        private async System.Threading.Tasks.Task _CreateEffect()
        {
            bool IsValid = await CreateEffectAsync(CEngine.Instance.RenderContext, this.Desc, CIPlatform.Instance.PlatformType);

            if (IsValid == false)
            {
                State = EEffectState.Invalid;
            }
            for (int i = 0; i < mOnCreatedList.Count; i++)
            {
                mOnCreatedList[i](IsValid);
            }
            mOnCreatedList.Clear();
        }
Example #5
0
    public void Load(XTransform param)
    {
        GameObject go = ZTEffect.Instance.LoadEffectById(Id);

        if (go == null || mOwner == null || mOwner.CacheTransform == null)
        {
            this.State = EEffectState.Error;
            return;
        }
        this.Obj            = go;
        this.CacheTransform = go.transform;

        switch (mData.Bind)
        {
        case EEffectBind.World:
        {
            CacheTransform.position    = mData.Offset;
            CacheTransform.eulerAngles = mData.Euler;
        }
        break;

        case EEffectBind.Trans:
        {
            if (mData.Parent == null)
            {
                CacheTransform.position    = mData.Offset;
                CacheTransform.eulerAngles = mData.Euler;
            }
            else
            {
                mData.SetParent            = true;
                CacheTransform.position    = mData.Parent.position + mData.Offset;
                CacheTransform.eulerAngles = mData.Parent.eulerAngles + mData.Euler;
            }
        }
        break;

        case EEffectBind.OwnBody:
        {
            CacheTransform.eulerAngles = mOwner.CacheTransform.localEulerAngles + mData.Euler;
            CacheTransform.position    = mOwner.GetBind(EActorBindPos.Body, mData.Offset);
        }
        break;

        case EEffectBind.OwnHead:
        {
            CacheTransform.eulerAngles = mOwner.CacheTransform.localEulerAngles + mData.Euler;
            CacheTransform.position    = mOwner.GetBind(EActorBindPos.Head, mData.Offset);
        }
        break;

        case EEffectBind.OwnFoot:
        {
            CacheTransform.eulerAngles = mOwner.CacheTransform.localEulerAngles + mData.Euler;
            CacheTransform.position    = mOwner.GetBind(EActorBindPos.Foot, mData.Offset);
        }
        break;

        case EEffectBind.OwnHand:
        {
            mData.SetParent = true;
            Transform[] hands = mOwner.GetHands();
            if (hands != null && hands[0] != null)
            {
                mData.Parent               = hands[0];
                CacheTransform.position    = mData.Parent.position + mData.Offset;
                CacheTransform.eulerAngles = mData.Parent.eulerAngles + mData.Euler;
            }
            else
            {
                CacheTransform.position    = mData.Offset;
                CacheTransform.eulerAngles = mData.Euler;
            }
        }
        break;

        case EEffectBind.TarBody:
        {
            Actor actor = mTarget == null ? mOwner : mTarget;
            CacheTransform.position = actor.GetBind(EActorBindPos.Head, mData.Offset);
        }
        break;

        case EEffectBind.TarFoot:
        {
            Actor actor = mTarget == null ? mOwner : mTarget;
            CacheTransform.position = actor.GetBind(EActorBindPos.Foot, mData.Offset);
        }
        break;

        case EEffectBind.TarHead:
        {
            Actor actor = mTarget == null ? mOwner : mTarget;
            CacheTransform.position = actor.GetBind(EActorBindPos.Head, mData.Offset);
        }
        break;

        case EEffectBind.OwnVTar:
        {
            if (mOwner != null && mTarget != null)
            {
                Vector3 pos1 = mTarget.GetBind(EActorBindPos.Body, Vector3.zero);
                Vector3 pos2 = mOwner.GetBind(EActorBindPos.Body, Vector3.zero);
                CacheTransform.position = (pos1 - pos2) * 0.5f + pos2;
            }
            else
            {
                CacheTransform.position = mOwner.GetBind(EActorBindPos.Body, Vector3.zero) + mOwner.Dir * 10;
            }
        }
        break;
        }

        if (mData.SetParent && mData.Parent != null)
        {
            CacheTransform.parent = mData.Parent;
        }
        mStartPos = CacheTransform.position;
        ZTAudio.Instance.PlayEffectAudio(mData.Sound);
        this.State = EEffectState.Update;
    }
Example #6
0
 public void OnWaitLoaderSetFinished(int waitCount)
 {
     Version++;
     this.State = EEffectState.Valid;
 }