Example #1
0
    private IEnumerator InstantiateEffect(EffectInst inst, Object obj, Vector3 position, Quaternion rotation,
                                          EffCastData data, Transform parent = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        effectInstList.Add(inst);

        if (data.m_delaytime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_delaytime));
        }

        GameObject effect = MonoBehaviour.Instantiate(obj, position + rotation * data.mOffsetPos, rotation) as GameObject;

        if (effect != null && OnInstantiated != null)
        {
            OnInstantiated(data, effect);
        }

        if (effect != null)
        {
            if (parent != null)
            {
                effect.transform.parent = parent;
            }
            else
            {
                effect.transform.parent = transform;
            }
        }

        if (effect != null && data.m_liveTime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_liveTime));

            Destroy(effect);
        }

        effectInstList.Remove(inst);
        yield break;
    }
Example #2
0
    public void InstantiateEffect(int effId, Transform caster, Transform target = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        EffCastData data = EffCastData.GetEffCastData(effId);

        if (data == null)
        {
            return;
        }

        Transform tr = null;

        if (string.IsNullOrEmpty(data.m_posStr) || data.m_posStr.Equals("0"))
        {
            tr = caster;
        }
        else
        {
            tr = AiUtil.GetChild(caster, data.m_posStr);
        }

        if (tr == null)
        {
            return;
        }

        Transform parent = data.m_bind ? tr : null;

        Instantiate(effId, tr, parent, target, OnInstantiated);
    }
Example #3
0
    public void Instantiate(int id, Vector3 position, Quaternion rotation, Transform parent = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        EffCastData data = EffCastData.GetEffCastData(id);

        if (data == null)
        {
            return;
        }

        EffectInst inst = new EffectInst();

        inst.coroutine = new CoroutineEffect(this, this.InstantiateEffect(inst, Resources.Load(data.m_path), position, rotation, data, parent, OnInstantiated));
    }
Example #4
0
    public void Instantiate(int id, Transform tr, Transform parent = null, Transform target = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        EffCastData data = EffCastData.GetEffCastData(id);

        if (data == null)
        {
            return;
        }

        EffectInst inst = new EffectInst();

        inst.coroutine = new CoroutineEffect(this, this.InstantiateEffect(inst, Resources.Load(data.m_path), tr, data, parent, target, OnInstantiated));
    }
Example #5
0
    private IEnumerator InstantiateEffect(EffectInst inst, Object obj, Transform tr, EffCastData data,
                                          Transform parent = null, Transform target = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        effectInstList.Add(inst);

        if (data.m_delaytime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_delaytime));
        }

        if (tr == null)
        {
            yield break;
        }

        Quaternion rot;

        if (data.m_direction == 0)
        {
            rot = Quaternion.identity;
        }
        else if (data.m_direction == 1)
        {
            rot = tr.rotation;
        }
        else
        {
            if (target != null)
            {
                rot = Quaternion.LookRotation(target.position - tr.position);
            }
            else
            {
                rot = tr.rotation;
            }
        }

        GameObject effect = MonoBehaviour.Instantiate(obj, tr.position + tr.rotation * data.mOffsetPos, rot) as GameObject;

        if (effect != null && OnInstantiated != null)
        {
            OnInstantiated(data, effect);
        }

        if (effect != null)
        {
            if (parent != null)
            {
                effect.transform.parent = parent;
            }
            else
            {
                effect.transform.parent = transform;
            }
        }

        if (effect != null && data.m_liveTime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_liveTime));

            Destroy(effect);
        }

        effectInstList.Remove(inst);
        yield break;
    }