Exemple #1
0
 public void RemoveFx(XFx fx)
 {
     if (_fxs.ContainsKey(fx.instanceID))
     {
         _fxs.Remove(fx.instanceID);
     }
 }
Exemple #2
0
    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);
    }
Exemple #3
0
    private void KillFx(object o)
    {
        XFx fx = o as XFx;

        _fx.Remove(fx);
        _outer_fx.Remove(fx);
        XFxMgr.singleton.DestroyFx(fx, false);
    }
Exemple #4
0
    public XFx CreateFx(string prefab_location, bool async)
    {
        XFx fx = new XFx();

        fx.CreateXFx(prefab_location, async);
        _fxs.Add(fx.instanceID, fx);
        return(fx);
    }
Exemple #5
0
    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);
    }
Exemple #6
0
    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);
        }
    }
Exemple #7
0
    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);
    }
Exemple #8
0
    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);
        }
    }
Exemple #9
0
 public void DestroyFx(XFx fx, bool bImmediately)
 {
     fx.DestroyXFx();
     RemoveFx(fx);
 }