public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) return false; GameObject obj = senderObj.GfxObj; if (null != obj) { if (curSectionTime >= StartTime) { GameObject target_obj = senderObj.TargetGfxObj; if (null == target_obj) { return false; } m_RealDeleteTime = m_DeleteTime.Get(instance); if (m_RealDeleteTime <= 0) { m_RealDeleteTime = senderObj.ConfigData.duration; if (m_RealDeleteTime <= 0) { m_RealDeleteTime = EntityController.Instance.GetImpactDuration(senderObj.ActorId, senderObj.SkillId, senderObj.Seq); } } if (m_RealDeleteTime <= 0) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] targeteffect deleteTime <= 0.", senderObj.SkillId, instance.DslSkillId); return false; } string effectPath = m_EffectPath.Get(instance, senderObj.ConfigData.resources); string attachPath = m_AttachPath.Get(instance); GameObject effectObj = null; if (string.IsNullOrEmpty(effectPath)) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] targeteffect effect is empty.", senderObj.SkillId, instance.DslSkillId); } else { effectObj = ResourceSystem.Instance.NewObject(effectPath, m_RealDeleteTime / 1000.0f) as GameObject; if (null == effectObj) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] targeteffect effect {2} can't find.", senderObj.SkillId, instance.DslSkillId, effectPath); } } if (null != effectObj) { TriggerUtil.SetObjVisible(effectObj, true); Transform bone = Utility.FindChildRecursive(target_obj.transform, attachPath); if (null == bone) { bone = obj.transform; LogSystem.Warn("[skill:{0} dsl skill id:{1}] targeteffect bone {2} can't find.", senderObj.SkillId, instance.DslSkillId, attachPath); } effectObj.SetActive(false); if (null != bone) { effectObj.transform.parent = bone; effectObj.transform.localPosition = m_Pos; effectObj.transform.localRotation = m_Dir; effectObj.transform.localScale = m_Scale; if (!m_IsAttach) { effectObj.transform.parent = null; } EffectManager em = instance.CustomDatas.GetData<EffectManager>(); if (em == null) { em = new EffectManager(); instance.CustomDatas.AddData<EffectManager>(em); } em.AddEffect(effectObj); em.SetParticleSpeed(instance.EffectScale); } effectObj.SetActive(true); } //GameFramework.LogSystem.Debug("TargetEffectTriger:{0}", m_EffectPath); return false; } else { return true; } } else { return false; } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) return false; GameObject obj = senderObj.GfxObj; if (null != obj) { if (null != senderObj.TrackEffectObj) obj = senderObj.TrackEffectObj; if (curSectionTime >= StartTime) { m_RealDeleteTime = m_DeleteTime.Get(instance); if (m_RealDeleteTime <= 0) { m_RealDeleteTime = senderObj.ConfigData.duration; } if (m_RealDeleteTime <= 0) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] sceneeffect deleteTime <= 0.", senderObj.SkillId, instance.DslSkillId); return false; } string effectPath = m_EffectPath.Get(instance, senderObj.ConfigData.resources); GameObject effectObj = null; if (string.IsNullOrEmpty(effectPath)) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] sceneeffect effect is empty.", senderObj.SkillId, instance.DslSkillId); } else { effectObj = ResourceSystem.Instance.NewObject(effectPath, m_RealDeleteTime / 1000.0f) as GameObject; if (null == effectObj) { LogSystem.Warn("[skill:{0} dsl skill id:{1}] sceneeffect effect {2} can't find.", senderObj.SkillId, instance.DslSkillId, effectPath); } } if (null != effectObj) { TriggerUtil.SetObjVisible(effectObj, true); effectObj.SetActive(false); Vector3 pos = obj.transform.TransformPoint(m_Pos); effectObj.transform.position = pos; effectObj.transform.localScale = m_Scale; if (m_IsRotateRelativeUser) { effectObj.transform.parent = obj.transform; effectObj.transform.localRotation = m_Dir; effectObj.transform.parent = null; } else { effectObj.transform.localRotation = m_Dir; } EffectManager em = instance.CustomDatas.GetData<EffectManager>(); if (em == null) { em = new EffectManager(); instance.CustomDatas.AddData<EffectManager>(em); } em.AddEffect(effectObj); em.SetParticleSpeed(instance.EffectScale); effectObj.SetActive(true); } return false; } else { return true; } } else { return false; } }