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; }
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); }
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)); }
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)); }
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; }