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); }
public void SwitchState(EEffectState state) { State = state; if (state == EEffectState.Dead) { Clear(); } }
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); }
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(); }
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; }
public void OnWaitLoaderSetFinished(int waitCount) { Version++; this.State = EEffectState.Valid; }