Пример #1
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            EntityInfo obj = senderObj.GfxObj;

            if (null == obj)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            instance.SetVariable("hitEffect", SkillParamUtility.RefixResourceVariable(m_HitEffect, instance, senderObj.ConfigData.resources));
            instance.SetVariable("hitEffectBone", m_HitEffectBone);
            instance.SetVariable("hitEffectStartTime", m_HitEffectStartTime);
            instance.SetVariable("hitEffectDeleteTime", m_HitEffectDeleteTime);
            instance.SetVariable("hitAnim", m_HitAnim);
            instance.SetVariable("hitAnimTime", m_HitAnimTime);
            instance.SetVariable("hitDelayTime", m_HitDelayTime);
            return(false);
        }
Пример #2
0
        //-----------------------------------------------------------------------------------------------------------
        public static void CalcImpactConfig(int emitImpact, int hitImpact, SkillInstance instance, TableConfig.Skill cfg, out Dictionary <string, object> result)
        {
            var variables = instance.Variables;

            result = new Dictionary <string, object>(variables);
            if (null != instance.EmitSkillInstances)
            {
                if (emitImpact <= 0)
                {
                    emitImpact = SkillInstance.c_FirstInnerEmitSkillId;
                }
                TableConfig.Skill impactCfg = TableConfig.SkillProvider.Instance.GetSkill(emitImpact);
                if (null != impactCfg)
                {
                    if (impactCfg.type == (int)SkillOrImpactType.Buff)
                    {
                        emitImpact = SkillInstance.c_FirstInnerEmitSkillId;
                    }
                }
                SkillInstance val;
                if (instance.EmitSkillInstances.TryGetValue(emitImpact, out val))
                {
                    result["emitskill"] = val;
                }
            }
            if (null != instance.HitSkillInstances)
            {
                if (hitImpact <= 0)
                {
                    hitImpact = SkillInstance.c_FirstInnerHitSkillId;
                }
                TableConfig.Skill impactCfg = TableConfig.SkillProvider.Instance.GetSkill(hitImpact);;
                if (null != impactCfg)
                {
                    if (impactCfg.type == (int)SkillOrImpactType.Buff)
                    {
                        hitImpact = SkillInstance.c_FirstInnerHitSkillId;
                    }
                }
                SkillInstance val;
                if (instance.HitSkillInstances.TryGetValue(hitImpact, out val))
                {
                    result["hitskill"] = val;
                }
            }
            string hitEffect = SkillParamUtility.RefixResourceVariable("hitEffect", instance, cfg.resources);

            if (!string.IsNullOrEmpty(hitEffect))
            {
                result["hitEffect"] = hitEffect;
            }
            string hitEffect1 = SkillParamUtility.RefixResourceVariable("hitEffect1", instance, cfg.resources);

            if (!string.IsNullOrEmpty(hitEffect1))
            {
                result["hitEffect1"] = hitEffect1;
            }
            string hitEffect2 = SkillParamUtility.RefixResourceVariable("hitEffect2", instance, cfg.resources);

            if (!string.IsNullOrEmpty(hitEffect2))
            {
                result["hitEffect2"] = hitEffect2;
            }
            string hitEffect3 = SkillParamUtility.RefixResourceVariable("hitEffect3", instance, cfg.resources);

            if (!string.IsNullOrEmpty(hitEffect3))
            {
                result["hitEffect3"] = hitEffect3;
            }
            string emitEffect = SkillParamUtility.RefixResourceVariable("emitEffect", instance, cfg.resources);

            if (!string.IsNullOrEmpty(emitEffect))
            {
                result["emitEffect"] = emitEffect;
            }
            string emitEffect1 = SkillParamUtility.RefixResourceVariable("emitEffect1", instance, cfg.resources);

            if (!string.IsNullOrEmpty(emitEffect1))
            {
                result["emitEffect1"] = emitEffect1;
            }
            string emitEffect2 = SkillParamUtility.RefixResourceVariable("emitEffect2", instance, cfg.resources);

            if (!string.IsNullOrEmpty(emitEffect2))
            {
                result["emitEffect2"] = emitEffect2;
            }
            string emitEffect3 = SkillParamUtility.RefixResourceVariable("emitEffect3", instance, cfg.resources);

            if (!string.IsNullOrEmpty(emitEffect3))
            {
                result["emitEffect3"] = emitEffect3;
            }
            string targetEffect = SkillParamUtility.RefixResourceVariable("targetEffect", instance, cfg.resources);

            if (!string.IsNullOrEmpty(targetEffect))
            {
                result["targetEffect"] = targetEffect;
            }
            string targetEffect1 = SkillParamUtility.RefixResourceVariable("targetEffect1", instance, cfg.resources);

            if (!string.IsNullOrEmpty(targetEffect1))
            {
                result["targetEffect1"] = targetEffect1;
            }
            string targetEffect2 = SkillParamUtility.RefixResourceVariable("targetEffect2", instance, cfg.resources);

            if (!string.IsNullOrEmpty(targetEffect2))
            {
                result["targetEffect2"] = targetEffect2;
            }
            string targetEffect3 = SkillParamUtility.RefixResourceVariable("targetEffect3", instance, cfg.resources);

            if (!string.IsNullOrEmpty(targetEffect3))
            {
                result["targetEffect3"] = targetEffect3;
            }
            string selfEffect = SkillParamUtility.RefixResourceVariable("selfEffect", instance, cfg.resources);

            if (!string.IsNullOrEmpty(selfEffect))
            {
                result["selfEffect"] = selfEffect;
            }
            string selfEffect1 = SkillParamUtility.RefixResourceVariable("selfEffect1", instance, cfg.resources);

            if (!string.IsNullOrEmpty(selfEffect1))
            {
                result["selfEffect1"] = selfEffect1;
            }
            string selfEffect2 = SkillParamUtility.RefixResourceVariable("selfEffect2", instance, cfg.resources);

            if (!string.IsNullOrEmpty(selfEffect2))
            {
                result["selfEffect2"] = selfEffect2;
            }
            string selfEffect3 = SkillParamUtility.RefixResourceVariable("selfEffect3", instance, cfg.resources);

            if (!string.IsNullOrEmpty(selfEffect3))
            {
                result["selfEffect3"] = selfEffect3;
            }
        }
Пример #3
0
 private int TryGetTimeFromConfig(SkillInstance instance)
 {
     return SkillParamUtility.RefixNonStringVariable<int>(m_Type, instance);
 }
Пример #4
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
            {
                return(false);//track只能在impact或buff里使用
            }
            GameObject obj = senderObj.GfxObj;

            if (null != obj)
            {
                if (curSectionTime >= StartTime)
                {
                    if (!m_IsStarted)
                    {
                        m_IsStarted = true;
                        Vector3 dest;
                        string  trackBone = m_TrackBone.Get(instance);
                        m_BoneTransform = Utility.FindChildRecursive(obj.transform, trackBone);
                        if (null != m_BoneTransform)
                        {
                            dest = m_BoneTransform.position;
                        }
                        else
                        {
                            dest    = obj.transform.position;
                            dest.y += 1.5f;
                            LogSystem.Warn("[skill:{0} dsl skill id:{1}] track bone {2} can't find.", senderObj.SkillId, instance.DslSkillId, trackBone);
                        }
                        m_StartPos = EntityController.Instance.GetImpactSenderPosition(senderObj.ObjId, senderObj.SkillId, senderObj.Seq);
                        dest       = Utility.FrontOfTarget(m_StartPos, dest, 0.1f);
                        object speedObj;
                        if (instance.Variables.TryGetValue("emitSpeed", out speedObj))
                        {
                            m_Speed = (float)speedObj;
                        }
                        else
                        {
                            return(false);
                        }
                        float duration = m_Duration.Get(instance);
                        if (duration > Geometry.c_FloatPrecision)
                        {
                            float d = duration / 1000.0f;
                            m_Lifetime = d;
                            m_Speed    = (dest - m_StartPos).magnitude / m_Lifetime;
                        }
                        else
                        {
                            m_Lifetime = 1.0f;
                            if (m_Speed > Geometry.c_FloatPrecision)
                            {
                                m_Lifetime = (dest - m_StartPos).magnitude / m_Speed;
                            }
                        }
                        long newSectionDuration = StartTime + (long)(m_Lifetime * 1000);
                        if (instance.CurSectionDuration < newSectionDuration)
                        {
                            instance.SetCurSectionDuration(newSectionDuration);
                        }
                        Quaternion dir;
                        object     dirObj;
                        if (instance.Variables.TryGetValue("emitDir", out dirObj))
                        {
                            dir = (Quaternion)dirObj;
                        }
                        else
                        {
                            dir = Quaternion.identity;
                        }
                        Vector3 scale;
                        object  scaleObj;
                        if (instance.Variables.TryGetValue("emitScale", out scaleObj))
                        {
                            scale = (Vector3)scaleObj;
                        }
                        else
                        {
                            scale = Vector3.one;
                        }
                        Vector3    lookDir = dest - m_StartPos;
                        Quaternion q       = Quaternion.LookRotation(lookDir);
                        m_ControlPos = m_StartPos + Vector3.Scale(q * dir * Vector3.forward, scale * lookDir.magnitude * 0.5f);
                        string effectPath = SkillParamUtility.RefixResourceVariable("emitEffect", instance, senderObj.ConfigData.resources);
                        m_Effect = ResourceSystem.Instance.NewObject(effectPath, m_Lifetime) as GameObject;
                        if (null != m_Effect)
                        {
                            senderObj.TrackEffectObj = m_Effect;
                            TriggerUtil.SetObjVisible(m_Effect, true);
                            m_Effect.SetActive(false);
                            m_Effect.transform.position      = m_StartPos;
                            m_Effect.transform.localRotation = q;
                            m_Effect.SetActive(true);
                        }
                        else
                        {
                            if (string.IsNullOrEmpty(effectPath))
                            {
                                LogSystem.Warn("[skill:{0} dsl skill id:{1}] track effect is empty.", senderObj.SkillId, instance.DslSkillId);
                            }
                            else
                            {
                                LogSystem.Warn("[skill:{0} dsl skill id:{1}] track effect {2} can't find.", senderObj.SkillId, instance.DslSkillId, effectPath);
                            }
                        }
                    }
                    else if (null != m_Effect)
                    {
                        if (!m_NotMove && !m_IsHit)
                        {
                            Vector3 dest;
                            if (null != m_BoneTransform)
                            {
                                dest = m_BoneTransform.position;
                            }
                            else
                            {
                                dest    = obj.transform.position;
                                dest.y += 1.5f;
                            }
                            dest = Utility.FrontOfTarget(m_StartPos, dest, 0.1f);
                            //m_Effect.transform.position = Vector3.MoveTowards(m_Effect.transform.position, dest, m_RealSpeed * Time.deltaTime);
                            m_Effect.transform.position = Utility.GetBezierPoint(m_StartPos, m_ControlPos, dest, (curSectionTime - StartTime) / 1000.0f / m_Lifetime);
                            if ((dest - m_Effect.transform.position).sqrMagnitude <= 0.01f)
                            {
                                m_HitEffectRotation = Quaternion.LookRotation(m_StartPos - dest);
                                if (m_NoImpact)
                                {
                                    instance.SetVariable("hitEffectRotation", m_HitEffectRotation);
                                }
                                else
                                {
                                    int impactId = EntityController.Instance.GetTrackSendImpact(senderObj.ObjId, senderObj.Seq, instance.Variables);
                                    Dictionary <string, object> args;
                                    TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                                    if (args.ContainsKey("hitEffectRotation"))
                                    {
                                        args["hitEffectRotation"] = m_HitEffectRotation;
                                    }
                                    else
                                    {
                                        args.Add("hitEffectRotation", m_HitEffectRotation);
                                    }
                                    EntityController.Instance.TrackSendImpact(senderObj.ObjId, senderObj.SkillId, senderObj.Seq, impactId, args);
                                    int senderId, targetId;
                                    EntityController.Instance.CalcSenderAndTarget(senderObj, out senderId, out targetId);
                                }
                                m_IsHit = true;
                            }
                        }
                        if (curSectionTime > StartTime + m_Lifetime * 1000)
                        {
                            m_Effect.SetActive(false);
                            ResourceSystem.Instance.RecycleObject(m_Effect);
                            m_Effect = null;
                            instance.StopCurSection();
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }

                    //GameFramework.LogSystem.Debug("EmitEffectTriger:{0}", m_EffectPath);
                    return(true);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                instance.StopCurSection();
                return(false);
            }
        }
Пример #5
0
    public bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
    {
        GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

        if (null == senderObj)
        {
            return(false);
        }
        if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
        {
            return(false);//track只能在impact或buff里使用
        }
        GameObject obj = senderObj.GfxObj;

        if (null != obj)
        {
            if (curSectionTime >= m_TriggerProxy.StartTime)
            {
                if (!m_IsStarted)
                {
                    m_IsStarted = true;

                    Vector3 dest;
                    string  trackBone = m_TrackBone.Get(instance);
                    m_BoneTransform = Utility.FindChildRecursive(obj.transform, trackBone);
                    if (null != m_BoneTransform)
                    {
                        dest = m_BoneTransform.position;
                    }
                    else
                    {
                        dest    = obj.transform.position;
                        dest.y += 1.5f;
                        LogSystem.Warn("[skill:{0} dsl skill id:{1}] trackbullet bone {2} can't find.", senderObj.SkillId, instance.DslSkillId, trackBone);
                    }
                    m_StartPos = EntityController.Instance.GetImpactSenderPosition(senderObj.ObjId, senderObj.SkillId, senderObj.Seq);
                    object speedObj;
                    if (instance.Variables.TryGetValue("emitSpeed", out speedObj))
                    {
                        m_Speed = (float)speedObj;
                    }
                    else
                    {
                        return(false);
                    }
                    long duration = m_Duration.Get(instance);
                    m_Lifetime = duration / 1000.0f;
                    if (Geometry.DistanceSquare(m_StartPos.x, m_StartPos.z, dest.x, dest.z) > 0.01f)
                    {
                        m_TargetPos = Utility.FrontOfTarget(dest, m_StartPos, m_Speed * m_Lifetime);
                    }
                    else
                    {
                        m_TargetPos = obj.transform.TransformPoint(0, 0, m_Speed * m_Lifetime);
                    }

                    long newSectionDuration = m_TriggerProxy.StartTime + (long)(m_Lifetime * 1000);
                    if (instance.CurSectionDuration < newSectionDuration)
                    {
                        instance.SetCurSectionDuration(newSectionDuration);
                    }
                    Quaternion dir;
                    object     dirObj;
                    if (instance.Variables.TryGetValue("emitDir", out dirObj))
                    {
                        dir = (Quaternion)dirObj;
                    }
                    else
                    {
                        dir = Quaternion.identity;
                    }
                    Vector3 scale;
                    object  scaleObj;
                    if (instance.Variables.TryGetValue("emitScale", out scaleObj))
                    {
                        scale = (Vector3)scaleObj;
                    }
                    else
                    {
                        scale = Vector3.one;
                    }
                    Vector3    lookDir = dest - m_StartPos;
                    Quaternion q       = Quaternion.LookRotation(lookDir);
                    m_ControlPos = m_StartPos + Vector3.Scale(q * dir * Vector3.forward, scale * lookDir.magnitude * 0.5f);
                    string effectPath = SkillParamUtility.RefixResourceVariable("emitEffect", instance, senderObj.ConfigData.resources);
                    m_Effect = ResourceSystem.Instance.NewObject(effectPath, m_Lifetime) as GameObject;
                    if (null != m_Effect)
                    {
                        senderObj.TrackEffectObj = m_Effect;
                        TriggerUtil.SetObjVisible(m_Effect, true);
                        m_Effect.SetActive(false);
                        m_Effect.transform.position      = m_StartPos;
                        m_Effect.transform.localRotation = q;
                        m_Effect.SetActive(true);

                        EffectManager em = instance.CustomDatas.GetData <EffectManager>();
                        if (em == null)
                        {
                            em = new EffectManager();
                            instance.CustomDatas.AddData <EffectManager>(em);
                        }
                        em.AddEffect(m_Effect);
                        em.SetParticleSpeed(instance.EffectScale);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(effectPath))
                        {
                            LogSystem.Warn("[skill:{0} dsl skill id:{1}] trackbullet effect is empty.", senderObj.SkillId, instance.DslSkillId);
                        }
                        else
                        {
                            LogSystem.Warn("[skill:{0} dsl skill id:{1}] trackbullet effect {2} can't find.", senderObj.SkillId, instance.DslSkillId, effectPath);
                        }
                    }
                }
                else if (null != m_Effect)
                {
                    Vector3 dest;
                    if (null != m_BoneTransform)
                    {
                        dest = m_BoneTransform.position;
                    }
                    else
                    {
                        dest    = obj.transform.position;
                        dest.y += 1.5f;
                    }
                    dest = Utility.FrontOfTarget(m_StartPos, dest, 0.1f);
                    //m_Effect.transform.position = Vector3.MoveTowards(m_Effect.transform.position, m_TargetPos, m_RealSpeed * Time.deltaTime);
                    m_Effect.transform.position = Utility.GetBezierPoint(m_StartPos, m_ControlPos, m_TargetPos, (curSectionTime - m_TriggerProxy.StartTime) / 1000.0f / m_Lifetime);
                    var pos = m_Effect.transform.position;
                    if (!m_IsHit)
                    {
                        float distSqr = float.MaxValue;
                        if (m_LastPos.sqrMagnitude > Geometry.c_FloatPrecision)
                        {
                            ScriptRuntime.Vector2 np;
                            ScriptRuntime.Vector2 targetPos = new ScriptRuntime.Vector2(dest.x, dest.z);
                            ScriptRuntime.Vector2 lastPos   = new ScriptRuntime.Vector2(m_LastPos.x, m_LastPos.z);
                            distSqr = Geometry.PointToLineSegmentDistanceSquare(targetPos, lastPos, new ScriptRuntime.Vector2(pos.x, pos.z), out np);
                        }
                        else
                        {
                            distSqr = (dest - pos).sqrMagnitude;
                        }
                        m_LastPos = pos;
                        if (distSqr <= m_BulletRadiusSquare)
                        {
                            float curTime  = Time.time;
                            float interval = m_DamageInterval.Get(instance) / 1000.0f;
                            if (m_LastTime + interval <= curTime)
                            {
                                m_LastTime = curTime;

                                m_HitEffectRotation = Quaternion.LookRotation(m_StartPos - dest);
                                int impactId = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                                Dictionary <string, object> args;
                                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                                if (args.ContainsKey("hitEffectRotation"))
                                {
                                    args["hitEffectRotation"] = m_HitEffectRotation;
                                }
                                else
                                {
                                    args.Add("hitEffectRotation", m_HitEffectRotation);
                                }
                                EntityController.Instance.TrackSendImpact(senderObj.ObjId, senderObj.SkillId, senderObj.Seq, impactId, args);
                                //m_IsHit = true;
                            }
                        }
                    }
                    if (curSectionTime > m_TriggerProxy.StartTime + m_Lifetime * 1000)
                    {
                        m_Effect.SetActive(false);
                        ResourceSystem.Instance.RecycleObject(m_Effect);
                        m_Effect = null;
                        instance.StopCurSection();
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
                return(true);
            }
            else
            {
                return(true);
            }
        }
        else
        {
            instance.StopCurSection();
            return(false);
        }
    }
Пример #6
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (null != obj)
            {
                if (curSectionTime >= StartTime)
                {
                    int senderId;
                    int targetId;
                    scene.EntityController.CalcSenderAndTarget(senderObj, out senderId, out targetId);
                    string effectPath = SkillParamUtility.RefixResourceVariable(m_EffectPath, instance, senderObj.ConfigData.resources);
                    string emitBone   = SkillParamUtility.RefixStringVariable(m_EmitBone, instance);
                    float  emitSpeed  = m_EmitSpeed;
                    if (!string.IsNullOrEmpty(effectPath))
                    {
                        EntityInfo target = scene.EntityController.GetGameObject(targetId);
                        if (null != target)
                        {
                            int emitImpact = m_EmitImpact;
                            if (!m_IsExternalImpact)
                            {
                                emitImpact = SkillInstance.GenInnerEmitSkillId(m_EmitImpact <= 0 ? 1 : m_EmitImpact);
                            }
                            int impactId = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                            Dictionary <string, object> args;
                            TriggerUtil.CalcImpactConfig(emitImpact, impactId, instance, senderObj.ConfigData, out args);
                            Dictionary <string, object> addArgs = new Dictionary <string, object>()
                            {
                                { "emitEffect", effectPath }, { "emitSpeed", emitSpeed }, { "emitDir", m_Dir }, { "emitScale", m_Scale }
                            };
                            foreach (var pair in addArgs)
                            {
                                if (args.ContainsKey(pair.Key))
                                {
                                    args[pair.Key] = pair.Value;
                                }
                                else
                                {
                                    args.Add(pair.Key, pair.Value);
                                }
                            }
                            scene.EntityController.TrackImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, targetId, emitBone, m_EmitImpact, m_Pos, args);
                        }
                    }
                    else
                    {
                        LogSystem.Warn("[skill:{0} dsl skill id:{1}] emit effect is empty.", senderObj.SkillId, instance.DslSkillId);
                    }
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
Пример #7
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (null != obj)
            {
                if (curSectionTime >= StartTime)
                {
                    int targetType = scene.EntityController.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                    int senderId   = 0;
                    if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                    {
                        senderId = senderObj.ActorId;
                    }
                    else
                    {
                        senderId = senderObj.TargetActorId;
                    }
                    string effectPath = SkillParamUtility.RefixResourceVariable(m_EffectPath, instance, senderObj.ConfigData.resources);
                    int    emitImpact = m_EmitImpact;
                    if (!m_IsExternalImpact)
                    {
                        emitImpact = SkillInstance.GenInnerEmitSkillId(m_EmitImpact <= 0 ? 1 : m_EmitImpact);
                    }
                    int    impactId  = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                    string emitBone  = SkillParamUtility.RefixStringVariable(m_EmitBone, instance);
                    float  emitSpeed = m_EmitSpeed;
                    int    ct        = 0;
                    TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                        Dictionary <string, object> args;
                        TriggerUtil.CalcImpactConfig(emitImpact, impactId, instance, senderObj.ConfigData, out args);
                        Dictionary <string, object> addArgs = new Dictionary <string, object>()
                        {
                            { "emitEffect", effectPath }, { "emitSpeed", emitSpeed }, { "emitDir", m_Dir }, { "emitScale", m_Scale }
                        };
                        foreach (var pair in addArgs)
                        {
                            if (args.ContainsKey(pair.Key))
                            {
                                args[pair.Key] = pair.Value;
                            }
                            else
                            {
                                args.Add(pair.Key, pair.Value);
                            }
                        }
                        scene.EntityController.TrackImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, objId, emitBone, emitImpact, m_Pos, args);
                        ++ct;
                        if (senderObj.ConfigData.maxAoeTargetCount <= 0 || ct < senderObj.ConfigData.maxAoeTargetCount)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    });
                    //GameFramework.LogSystem.Debug("AoeEmitEffectTriger:{0}", m_EffectPath);
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }