public void RemoveFx(XFx fx) { if (_fxs.ContainsKey(fx.instanceID)) { _fxs.Remove(fx.instanceID); } }
void Fx(object o) { XFxDataClip clip = o as XFxDataClip; Transform trans = (clip.BindIdx < 0) ? null : _actors[clip.BindIdx].Actor.transform; if (clip.Bone != null && clip.Bone.Length > 0) { trans = trans.Find(clip.Bone); } else { trans = null; } XFx fx = XFxMgr.singleton.CreateFx(clip.Fx); fx.DelayDestroy = clip.Destroy_Delay; if (trans != null) { fx.Play(trans.gameObject, Vector3.zero, clip.Scale * Vector3.one, 1); } else { fx.Play(new Vector3(clip.AppearX, clip.AppearY, clip.AppearZ), XCommon.singleton.FloatToQuaternion(clip.Face), Vector3.one); } _fxs.Add(fx); }
private void KillFx(object o) { XFx fx = o as XFx; _fx.Remove(fx); _outer_fx.Remove(fx); XFxMgr.singleton.DestroyFx(fx, false); }
public XFx CreateFx(string prefab_location, bool async) { XFx fx = new XFx(); fx.CreateXFx(prefab_location, async); _fxs.Add(fx.instanceID, fx); return(fx); }
public XFx CreateAndPlay(string location, GameObject parent, Vector3 offset, Vector3 scale, float speed_ratio = 1, float duration = -1, bool async = true) { XFx fx = new XFx(); fx.CreateXFx(location, async); fx.Play(parent, offset, scale, speed_ratio); fx.DelayDestroy = duration; return(fx); }
public new void OnTriggerEnter(Collider c) { if (c.gameObject.CompareTag("Player")) { XFx xFx = XSingleton <XFxMgr> .singleton.CreateFx("Effects/FX_Particle/Shared/Drop_xishou", false); xFx.Play(c.transform, 1f, Vector3.one, true); base.transform.position = new Vector3(0f, 0f, 10000f); } }
public XFx CreateUIFx(string location, Transform parent, Vector3 scale, bool processMesh) { XFx fx = CreateFx(location); int uiLayer = LayerMask.NameToLayer("UI"); fx.SetRenderLayer(uiLayer); fx.Play(parent.gameObject, Vector3.zero, scale, 1.0f); fx.RefreshUIRenderQueue(); return(fx); }
public override void OnTrigger(object param) { XFxData data = param as XFxData; if (data.Shield || data.Fx == null) { return; } Transform trans = host.Transform; Vector3 offset = new Vector3(data.OffsetX, data.OffsetY, data.OffsetZ); XFx fx = XFxMgr.singleton.CreateFx(data.Fx); fx.DelayDestroy = data.Destroy_Delay; if (data.StickToGround) { switch (data.Type) { case SkillFxType.FirerBased: break; case SkillFxType.TargetBased: if (current.NeedTarget && host.Target != null) { trans = host.Target.transform; offset = new Vector3(data.Target_OffsetX, data.Target_OffsetY, data.Target_OffsetZ); } break; } Vector3 pos = trans.position + trans.rotation * offset; pos.y = 0; fx.Play(pos, Quaternion.identity, new Vector3(data.ScaleX, data.ScaleY, data.ScaleZ)); } else { switch (data.Type) { case SkillFxType.FirerBased: if (data.Bone != null && data.Bone.Length > 0) { Transform attachPoint = trans.Find(data.Bone); if (attachPoint != null) { trans = attachPoint; } else { int index = data.Bone.LastIndexOf("/"); if (index >= 0) { string bone = data.Bone.Substring(index + 1); attachPoint = trans.Find(bone); if (attachPoint != null) { trans = attachPoint; } } } } break; case SkillFxType.TargetBased: if (current.NeedTarget && host.Target != null) { trans = host.Target.transform; offset = new Vector3(data.Target_OffsetX, data.Target_OffsetY, data.Target_OffsetZ); } break; } fx.Play(trans.gameObject, offset, new Vector3(data.ScaleX, data.ScaleY, data.ScaleZ), 1); } if (data.Combined) { if (data.End > 0) { AddedTimerToken(XTimerMgr.singleton.SetTimer(data.End - data.At, KillFx, fx)); } _outer_fx.Add(fx); } else { if (data.End > 0) { _timers.Add(XTimerMgr.singleton.SetTimer(data.End - data.At, KillFx, fx)); } _fx.Add(fx); } }
public void DestroyFx(XFx fx, bool bImmediately) { fx.DestroyXFx(); RemoveFx(fx); }