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 (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_RemainTime > 0 && curSectionTime > (StartTime + m_RemainTime))
            {
                return(false);
            }
            if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
            {
                scene.EntityController.KeepTarget(senderObj.TargetActorId);
            }
            else
            {
                scene.EntityController.KeepTarget(senderObj.ActorId);
            }
            return(true);
        }
        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 (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (StartTime + m_DurationTime < curSectionTime)
            {
                return(false);
            }
            EntityInfo targetObj = senderObj.TargetGfxObj;

            if (null != targetObj)
            {
                Vector3 srcPos = targetObj.GetMovementStateInfo().GetPosition3D();
                float   dir    = targetObj.GetMovementStateInfo().GetFaceDir();
                Vector3 pos    = Geometry.TransformPoint(srcPos, m_RelativeOffset, dir);
                TriggerUtil.MoveObjTo(obj, pos);
            }
            return(true);
        }
Exemplo n.º 3
0
        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)
            {
                return(false);
            }
            if (null != senderObj.TrackEffectObj)
            {
                obj = senderObj.TrackEffectObj;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            Vector3 old_pos = instance.CustomDatas.GetData <Vector3>();

            if (old_pos.sqrMagnitude > Geometry.c_FloatPrecision)
            {
                obj.transform.position = old_pos;
            }
            return(false);
        }
Exemplo n.º 4
0
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            EffectManager em = instance.CustomDatas.GetData <EffectManager>();

            if (em == null)
            {
                return(false);
            }
            em.StopEffects();
            return(false);
        }
Exemplo n.º 5
0
        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 (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            TargetManager mgr = instance.CustomDatas.GetData <TargetManager>();

            if (null != mgr)
            {
                mgr.Clear();
            }
            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)
            {
                return(false);
            }
            if (curSectionTime >= StartTime)
            {
                if (senderObj.ConfigData.type != (int)SkillOrImpactType.Skill)
                {
                    EntityController.Instance.ImpactDamage(senderObj.TargetActorId, senderObj.ActorId, senderObj.SkillId, senderObj.Seq, IsFinal);
                }
                return(false);
            }
            else
            {
                return(true);
            }
        }
        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)
            {
                return(false);
            }
            if (null != senderObj.TrackEffectObj)
            {
                obj = senderObj.TrackEffectObj;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (curSectionTime > StartTime + m_RemainTime)
            {
                return(false);
            }
            obj.transform.Rotate(m_RotateSpeed * TriggerUtil.ConvertToSecond(delta));
            return(true);
        }
        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)
            {
                EntityController.Instance.RemoveState(senderObj.ActorId, m_State);
                return(false);
            }
            if (curSectionTime >= StartTime)
            {
                EntityController.Instance.AddState(senderObj.ActorId, m_State);
                return(false);
            }
            else
            {
                return(true);
            }
        }
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_LastKeepTime <= 0 || m_LastKeepTime + m_Interval >= curSectionTime)
            {
                m_LastKeepTime = curSectionTime;
                int time = EntityController.Instance.GetImpactDuration(senderObj.ObjId, senderObj.SkillId, senderObj.Seq);
                if (time > 0)
                {
                    instance.SetCurSectionDuration((long)time + m_DeltaTime);
                }
                else
                {
                    LogSystem.Warn("adjustsectionduration impact duration is 0, skill id:{0} dsl skill id:{1}", senderObj.SkillId, instance.DslSkillId);
                }
            }
            return(true);
        }
        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);
            }
            Vector3 old_pos = instance.CustomDatas.GetData <Vector3>();

            if (old_pos != null)
            {
                obj.GetMovementStateInfo().SetPosition(old_pos);
            }
            return(false);
        }
Exemplo n.º 11
0
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            List <object> args = new List <object>();

            args.Add(senderObj);
            for (int i = 0; i < m_Args.Count; ++i)
            {
                args.Add(m_Args[i]);
            }
            if (m_IsConcurrent)
            {
                GfxStorySystem.Instance.SendConcurrentMessage(m_Msg, args.ToArray());
            }
            else
            {
                GfxStorySystem.Instance.SendMessage(m_Msg, args.ToArray());
            }
            return(false);
        }
Exemplo n.º 12
0
 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) return false;
     if (curSectionTime < StartTime) {
         return true;
     }
     if (m_HaveIsContinue) {
         if (0 == m_Type.CompareTo("shield")) {
             if (EntityController.Instance.HaveShield(senderObj.ObjId))
                 return true;
         } else {
             if (EntityController.Instance.HaveState(senderObj.ObjId, m_Type))
                 return true;
         }
     } else {
         if (0 == m_Type.CompareTo("shield")) {
             if (!EntityController.Instance.HaveShield(senderObj.ObjId))
                 return true;
         } else {
             if (!EntityController.Instance.HaveState(senderObj.ObjId, m_Type))
                 return true;
         }
     }
     instance.StopCurSection();
     return false;
 }
Exemplo n.º 13
0
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            List <object> arglist = new List <object>();

            arglist.Add(senderObj);
            for (int i = 0; i < m_Args.Count; ++i)
            {
                arglist.Add(m_Args[i]);
            }
            object[] args = arglist.ToArray();
            Utility.EventSystem.Publish(m_Event, m_Group, args);
            return(false);
        }
Exemplo n.º 14
0
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            GameObject receiver = null;

            switch (m_Type)
            {
            case 0:
                receiver = obj;
                break;

            case 1:
                receiver = senderObj.TargetGfxObj;
                break;

            case 2:
                receiver = senderObj.TrackEffectObj;
                break;
            }
            if (null == receiver)
            {
                return(false);
            }
            List <object> arglist = new List <object>();

            arglist.Add(senderObj);
            for (int i = 0; i < m_Args.Count; ++i)
            {
                arglist.Add(m_Args[i]);
            }
            object[] args = arglist.ToArray();
            if (args.Length == 0)
            {
                receiver.SendMessage(m_Msg, UnityEngine.SendMessageOptions.DontRequireReceiver);
            }
            else if (args.Length == 1)
            {
                receiver.SendMessage(m_Msg, args[0], UnityEngine.SendMessageOptions.DontRequireReceiver);
            }
            else
            {
                receiver.SendMessage(m_Msg, args, UnityEngine.SendMessageOptions.DontRequireReceiver);
            }
            return(false);
        }
Exemplo n.º 15
0
        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)
            {
                return(false);
            }
            GameObject target = senderObj.TargetGfxObj;

            if (null != senderObj.TrackEffectObj)
            {
                obj    = senderObj.TrackEffectObj;
                target = senderObj.GfxObj;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            Vector3 pos = obj.transform.position;

            instance.CustomDatas.AddData <Vector3>(pos);
            return(false);
        }
Exemplo n.º 16
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);
        }
Exemplo n.º 17
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)
            {
                scene.EntityController.RemoveShield(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                return(false);
            }
            if (curSectionTime >= StartTime)
            {
                scene.EntityController.RemoveShield(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                return(false);
            }
            else
            {
                return(true);
            }
        }
        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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            foreach (var pair in m_Params)
            {
                instance.SetVariable(pair.Key, pair.Value);
            }
            return(false);
        }
Exemplo n.º 19
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);
            }
            if (curSectionTime > StartTime + m_RemainTime)
            {
                return(false);
            }
            float dir = obj.GetMovementStateInfo().GetFaceDir();

            dir = (dir + Geometry.DegreeToRadian(m_RotateSpeed.Y) * TriggerUtil.ConvertToSecond(delta)) % (float)(2 * Math.PI);
            obj.GetMovementStateInfo().SetFaceDir(dir);
            return(true);
        }
Exemplo n.º 20
0
        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 (obj == null)
            {
                return(false);
            }
            long durationTime = m_DurationTime.Get(instance);
            long intervalTime = m_IntervalTime.Get(instance);

            if (durationTime <= 0)
            {
                durationTime = senderObj.ConfigData.duration;
            }
            if (intervalTime <= 0)
            {
                intervalTime = senderObj.ConfigData.interval;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (curSectionTime > StartTime + durationTime)
            {
                return(false);
            }
            if (m_LastTime + intervalTime < curSectionTime)
            {
                m_LastTime = curSectionTime;
                int targetType = EntityController.Instance.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                int senderId;
                int targetId;
                EntityController.Instance.CalcSenderAndTarget(senderObj, out senderId, out targetId);
                if (senderObj.ConfigData.aoeType != (int)SkillAoeType.Unknown)
                {
                    float minDistSqr = float.MaxValue;
                    TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                        if (distSqr < minDistSqr)
                        {
                            minDistSqr = distSqr;
                            targetId   = objId;
                        }
                        return(true);
                    });
                }
                Dictionary <string, object> args;
                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                EntityController.Instance.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, targetId, impactId, IsFinal, args);
            }
            return(true);
        }
        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)
                {
                    Animator animator = obj.GetComponentInChildren <Animator>();
                    if (null != animator)
                    {
                        string anim = m_AnimName.Get(instance);
                        if (!string.IsNullOrEmpty(anim))
                        {
                            try {
                                if (m_PlayMode == 0)
                                {
                                    animator.Play(anim, -1, m_NormalizedAnimStartTime.Get(instance));
                                }
                                else
                                {
                                    animator.CrossFade(anim, m_CrossFadeTime / 1000.0f, -1, m_NormalizedAnimStartTime.Get(instance));
                                }
                                animator.speed = m_Speed;
                                if (m_IsEffectSkillTime)
                                {
                                    instance.TimeScale = m_Speed;
                                }
                            } catch (Exception ex) {
                                LogSystem.Error("[skill:{0} dsl skill id:{1}] play animation {2} throw exception:{3}.", senderObj.SkillId, instance.DslSkillId, anim, ex.Message);
                            }
                        }
                        else
                        {
                            LogSystem.Warn("[skill:{0} dsl skill id:{1}] animation is null.", senderObj.SkillId, instance.DslSkillId);
                        }
                    }
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 22
0
        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 (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            long duration = m_DurationTime.Get(instance);
            long interval = m_IntervalTime.Get(instance);

            if (curSectionTime > StartTime + duration)
            {
                return(false);
            }
            if (m_LastTime + interval < curSectionTime)
            {
                m_LastTime = curSectionTime;
                int targetType = EntityController.Instance.GetTargetType(senderObj.ObjId, senderObj.ConfigData, senderObj.Seq);
                int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                int senderId   = 0;
                if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                {
                    senderId = senderObj.ObjId;
                }
                else
                {
                    senderId = senderObj.TargetObjId;
                }
                int        ct        = 0;
                List <int> targetIds = new List <int>();
                TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                    Dictionary <string, object> args;
                    TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                    EntityController.Instance.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ObjId, senderId, objId, impactId, IsFinal, args);
                    targetIds.Add(objId);
                    ++ct;
                    if (senderObj.ConfigData.maxAoeTargetCount <= 0 || ct < senderObj.ConfigData.maxAoeTargetCount)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                });
            }
            return(true);
        }
        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 (obj == null)
            {
                return(false);
            }
            GameObject targetObj = senderObj.TargetGfxObj;

            if (null != senderObj.TrackEffectObj)
            {
                obj       = senderObj.TrackEffectObj;
                targetObj = senderObj.GfxObj;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_IsForRoundMove)
            {
                Vector3 srcPos    = obj.transform.position;
                Vector3 targetPos = Vector3.zero;
                if (null != targetObj)
                {
                    targetPos = targetObj.transform.position;
                }
                TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref targetPos);
                if (targetPos.sqrMagnitude > Geometry.c_FloatPrecision)
                {
                    float angle = Geometry.GetYRadian(new ScriptRuntime.Vector2(srcPos.x, srcPos.z), new ScriptRuntime.Vector2(targetPos.x, targetPos.z));
                    ScriptRuntime.Vector2 newPos = new ScriptRuntime.Vector2(targetPos.x, targetPos.z) + Geometry.GetRotate(new ScriptRuntime.Vector2(m_RelativeOffset.x, m_RelativeOffset.z), angle);
                    targetPos = new Vector3(newPos.X, srcPos.y + m_RelativeOffset.y, newPos.Y);
                    TriggerUtil.MoveObjTo(obj, targetPos);
                }
            }
            else if (null != targetObj)
            {
                //Vector3 pos = targetObj.transform.TransformPoint(m_RelativeOffset);
                Vector3 srcPos = obj.transform.position;
                Vector3 pos    = Vector3.zero;
                if (null != targetObj)
                {
                    pos = targetObj.transform.position;
                }
                TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref pos);
                pos.y = srcPos.y;
                TriggerUtil.MoveObjTo(obj, pos);
            }
            return(false);
        }
Exemplo n.º 24
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)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_HaveIsContinue)
            {
                if (0 == m_Type.CompareTo("shield"))
                {
                    if (scene.EntityController.HaveShield(senderObj.ActorId))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (scene.EntityController.HaveState(senderObj.ActorId, m_Type))
                    {
                        return(true);
                    }
                }
            }
            else
            {
                if (0 == m_Type.CompareTo("shield"))
                {
                    if (!scene.EntityController.HaveShield(senderObj.ActorId))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (!scene.EntityController.HaveState(senderObj.ActorId, m_Type))
                    {
                        return(true);
                    }
                }
            }
            instance.StopCurSection();
            return(false);
        }
Exemplo n.º 25
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            m_Myself = senderObj.GfxObj;
            if (null == m_Myself)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_IsExecuted && curSectionTime > (StartTime + m_RemainTime))
            {
                return(false);
            }
            Vector3 pos = m_Myself.transform.position;

            m_Target = senderObj.TargetGfxObj;
            if (!m_IsExecuted && (null == m_Target && !string.IsNullOrEmpty(m_SelectTargetType)))
            {
                TargetManager mgr = instance.CustomDatas.GetData <TargetManager>();
                if (null == mgr)
                {
                    mgr = new TargetManager();
                    instance.CustomDatas.AddData(mgr);
                }
                int targetId = EntityController.Instance.SelectTargetForSkill(m_SelectTargetType, senderObj.ObjId, senderObj.ConfigData, senderObj.Seq, mgr.Targets);
                if (targetId > 0)
                {
                    mgr.Add(targetId);
                    m_Target = EntityController.Instance.GetGameObject(targetId);
                    senderObj.TargetObjId  = targetId;
                    senderObj.TargetGfxObj = m_Target;
                }
            }
            if (null != m_Target)
            {
                m_IsExecuted = true;
                if (!m_IsHaveRotateSpeed || m_RotateSpeed.y == 0)
                {
                    TriggerUtil.Lookat(m_Myself, m_Target.transform.position);
                }
                else
                {
                    float maxRotateDelta = m_RotateSpeed.y * TriggerUtil.ConvertToSecond(delta);
                    TriggerUtil.Lookat(m_Myself, m_Target.transform.position, maxRotateDelta);
                }
            }
            return(true);
        }
Exemplo n.º 26
0
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_RemainTime > 0 && curSectionTime > (StartTime + m_RemainTime))
            {
                return(false);
            }
            if (senderObj.ConfigData.aoeType != (int)SkillAoeType.Unknown)
            {
                int targetType = EntityController.Instance.GetTargetType(senderObj.ObjId, senderObj.ConfigData, senderObj.Seq);
                int senderId   = 0;
                if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                {
                    senderId = senderObj.ObjId;
                }
                else
                {
                    senderId = senderObj.TargetObjId;
                }
                int ct = 0;
                TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                    ++ct;
                    if (senderObj.ConfigData.maxAoeTargetCount <= 0 || ct < senderObj.ConfigData.maxAoeTargetCount)
                    {
                        EntityController.Instance.KeepTarget(objId);
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                });
            }
            else
            {
                if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                {
                    EntityController.Instance.KeepTarget(senderObj.TargetObjId);
                }
                else
                {
                    EntityController.Instance.KeepTarget(senderObj.ObjId);
                }
            }
            return(true);
        }
Exemplo n.º 27
0
 private void ShowHideForSkill(object[] args)
 {
     if (null != args && args.Length >= 2)
     {
         GfxSkillSenderInfo info = args[0] as GfxSkillSenderInfo;
         string             v    = args[1] as string;
         if (null != info && null != v && null != info.GfxObj)
         {
             info.GfxObj.SetActive(v != "0");
         }
     }
 }
Exemplo n.º 28
0
        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)
            {
                return(false);
            }
            if (null != senderObj.TrackEffectObj)
            {
                obj = senderObj.TrackEffectObj;
            }
            if (!m_IsResourcePreloaded)
            {
                PreloadResource(obj, instance);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (m_IsNeedCollide)
            {
            }
            string    random_audio = GetRandomAudio();
            AudioClip clip         = ResourceSystem.Instance.GetSharedResource(random_audio) as AudioClip;

            if (null == clip)
            {
                return(false);
            }
            if (m_AudioSource != null)
            {
                if (m_AudioSource.loop)
                {
                    m_AudioSource.clip = clip;
                    m_AudioSource.Play();
                }
                else
                {
                    m_AudioSource.PlayOneShot(clip);
                }
                m_AudioSource.volume       = m_volume;
                m_AudioSource.dopplerLevel = 0f;
            }
            return(false);
        }
Exemplo n.º 29
0
 private void CameraShakeForSkill(object[] args)
 {
     if (null != args && args.Length >= 4)
     {
         GfxSkillSenderInfo info = args[0] as GfxSkillSenderInfo;
         if (null != info)
         {
             if (PluginFramework.Instance.IsLocalSkillEffect(info))
             {
                 m_CameraController.Shake(float.Parse(args[1] as string), float.Parse(args[2] as string), float.Parse(args[3] as string));
             }
         }
     }
 }
Exemplo n.º 30
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)
            {
                return(false);
            }
            if (curSectionTime >= StartTime)
            {
                int targetType = scene.EntityController.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                int senderId   = 0;
                if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                {
                    senderId = senderObj.ActorId;
                }
                else
                {
                    senderId = senderObj.TargetActorId;
                }
                int ct = 0;
                TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                    Dictionary <string, object> args;
                    TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                    scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, objId, impactId, args);
                    ++ct;
                    if (senderObj.ConfigData.maxAoeTargetCount <= 0 || ct < senderObj.ConfigData.maxAoeTargetCount)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                });
                return(false);
            }
            else
            {
                return(true);
            }
        }
Exemplo n.º 31
0
 public static void AoeQuery(GfxSkillSenderInfo senderObj, SkillInstance instance, int senderId, int targetType, Vector3 relativeCenter, bool relativeToTarget, MyFunc<float, int, bool> callback)
 {
     GameObject srcObj = senderObj.GfxObj;
     if (null != senderObj.TrackEffectObj)
         srcObj = senderObj.TrackEffectObj;
     GameObject targetObj = senderObj.TargetGfxObj;
     int aoeType = 0;
     float range = 0;
     float angleOrLength = 0;
     TableConfig.Skill cfg = senderObj.ConfigData;
     if (null != cfg) {
         aoeType = cfg.aoeType;
         range = cfg.aoeSize;
         angleOrLength = cfg.aoeAngleOrLength;
     }
     AoeQuery(srcObj, targetObj, aoeType, range, angleOrLength, instance, senderId, targetType, relativeCenter, relativeToTarget, callback);
 }
 internal SkillInstance FindActiveSkillInstance(int actorId, int skillId, int seq, out GfxSkillSenderInfo sender)
 {
     SkillLogicInfo logicInfo = m_SkillLogicInfos.Find(info => info.ActorId == actorId && info.SkillId == skillId && info.Seq == seq);
     if (null != logicInfo) {
         sender = logicInfo.Sender;
         return logicInfo.SkillInst;
     }
     sender = null;
     return null;
 }
 internal SkillInstance FindInnerSkillInstanceForSkillViewer(int skillId, SkillInstance innerInstance, out GfxSkillSenderInfo sender)
 {
     SkillInstance ret = null;
     SkillLogicInfo logicInfo = m_SkillLogicInfos.Find(info => info.SkillId == skillId && info.SkillInst.InnerDslSkillId == innerInstance.InnerDslSkillId && info.SkillInst.OuterDslSkillId == innerInstance.OuterDslSkillId);
     if (null != logicInfo) {
         sender = logicInfo.Sender;
         ret = logicInfo.SkillInst;
     } else {
         int newSkillId = CalcUniqueInnerSkillId(skillId, innerInstance);
         sender = null;
         var instInfo = GetUnusedSkillInstanceInfoFromPool(newSkillId);
         if (null != instInfo) {
             ret = instInfo.m_SkillInstance;
         }
     }
     return ret;
 }
 internal SkillInstance FindSkillInstanceForSkillViewer(int skillId, out GfxSkillSenderInfo sender)
 {
     SkillInstance ret = null;
     SkillLogicInfo logicInfo = m_SkillLogicInfos.Find(info => info.SkillId == skillId);
     if (null != logicInfo) {
         sender = logicInfo.Sender;
         ret = logicInfo.SkillInst;
     } else {
         sender = null;
         var instInfo = GetUnusedSkillInstanceInfoFromPool(skillId);
         if (null != instInfo) {
             ret = instInfo.m_SkillInstance;
         }
     }
     return ret;
 }
 public bool IsLocalSkillEffect(GfxSkillSenderInfo info)
 {
     if (info.ActorId == m_leaderID || info.TargetActorId == m_leaderID) {
         return true;
     }
     EntityInfo sender = GetEntityById(info.ActorId);
     if (null != sender && !sender.IsServerEntity) {
         return true;
     }
     EntityInfo target = GetEntityById(info.TargetActorId);
     if (null != target && !target.IsServerEntity) {
         return true;
     }
     return false;
 }
 internal SkillInstance GetActiveSkillInfo(int index, out GfxSkillSenderInfo sender)
 {
     int ct = m_SkillLogicInfos.Count;
     if (index >= 0 && index < ct) {
         var info = m_SkillLogicInfos[index];
         sender = info.Sender;
         return info.SkillInst;
     } else {
         sender = null;
         return null;
     }
 }
 internal SkillLogicInfo(GfxSkillSenderInfo sender, SkillInstanceInfo info)
 {
     m_Sender = sender;
     m_SkillInfo = info;
 }
        private void CalNewSpeedWithTarget(GfxSkillSenderInfo senderObj, SkillInstance instance)
        {
            GameObject obj = senderObj.GfxObj;
            GameObject target = senderObj.TargetGfxObj;
            if (null == obj)
                return;
            Vector3 srcPos = obj.transform.position;
            Vector3 targetPos = Vector3.zero;
            if (null != target) {
                targetPos = target.transform.position;
            }
            if (m_IsForRoundMove) {
                TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref targetPos);
                m_TargetPos = targetPos;
            } else if (null == target) {
                return;
            }

            float cur_distance_z = 0;
            for (int i = 0; i < m_SectionListCopy.Count; i++) {
                cur_distance_z += (m_SectionListCopy[i].speedVect.z * m_SectionListCopy[i].moveTime +
                                   m_SectionListCopy[i].accelVect.z * m_SectionListCopy[i].moveTime * m_SectionListCopy[i].moveTime / 2.0f);
            }
            Vector3 target_motion = (targetPos - obj.transform.position);
            target_motion.y = 0;
            float target_distance_z = target_motion.magnitude;
            float speed_ratio = 1;
            if (cur_distance_z != 0) {
                speed_ratio = target_distance_z / cur_distance_z;
            }
            for (int i = 0; i < m_SectionListCopy.Count; i++) {
                m_SectionListCopy[i].speedVect.z *= speed_ratio;
                m_SectionListCopy[i].accelVect.z *= speed_ratio;
            }
        }
        internal void CalcSenderAndTarget(GfxSkillSenderInfo senderObj, out int senderId, out int targetId)
        {
            senderId = 0;
            targetId = 0;

            int targetType = GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
            if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill) {
                senderId = senderObj.ActorId;
                targetId = senderObj.TargetActorId;
                if (targetType == (int)SkillTargetType.RandEnemy) {
                    targetId = GetRandEnemyId(GetCampId(senderId));
                } else if (targetType == (int)SkillTargetType.RandFriend) {
                    targetId = GetRandFriendId(GetCampId(senderId));
                } else if (targetType == (int)SkillTargetType.Friend) {
                    targetId = senderObj.ActorId;
                } else if (targetType == (int)SkillTargetType.Self) {
                    targetId = senderObj.ActorId;
                }
            } else {
                senderId = senderObj.TargetActorId;
                targetId = senderObj.ActorId;
                if (targetType == (int)SkillTargetType.RandEnemy) {
                    targetId = GetRandEnemyId(GetCampId(senderId));
                } else if (targetType == (int)SkillTargetType.RandFriend) {
                    targetId = GetRandFriendId(GetCampId(senderId));
                } else if (targetType == (int)SkillTargetType.Friend) {
                    targetId = senderObj.TargetActorId;
                } else if (targetType == (int)SkillTargetType.Self) {
                    targetId = senderObj.TargetActorId;
                }
            }
        }
 internal GfxSkillSenderInfo BuildSkillInfo(int objId, TableConfig.Skill configData, int seq)
 {
     GfxSkillSenderInfo ret = null;
     EntityViewModel view = GetEntityViewById(objId);
     if (null != view && null != view.Actor && null != view.Entity && null != configData) {
         EntityInfo entity = view.Entity;
         int targetId = 0;
         if (configData.type == (int)SkillOrImpactType.Skill) {
             targetId = entity.GetAiStateInfo().Target;
         } else {
             ImpactInfo impactInfo = entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
             if (null != impactInfo) {
                 targetId = impactInfo.ImpactSenderId;
             }
         }
         UnityEngine.GameObject targetObj = GetGameObject(targetId);
         if (null != targetObj) {
             ret = new GfxSkillSenderInfo(configData, seq, objId, view.Actor, targetId, targetObj);
         } else {
             ret = new GfxSkillSenderInfo(configData, seq, objId, view.Actor);
         }
     }
     return ret;
 }
 internal GfxSkillSenderInfo BuildSkillInfo(int objId, TableConfig.Skill configData, int seq, Scene scene)
 {
     GfxSkillSenderInfo ret = null;
     EntityInfo entity = m_Scene.EntityManager.GetEntityInfo(objId);
     if (null != entity && null != configData) {
         int targetId = 0;
         if (configData.type == (int)SkillOrImpactType.Skill) {
             targetId = entity.GetAiStateInfo().Target;
         } else {
             ImpactInfo impactInfo = entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
             if (null != impactInfo) {
                 targetId = impactInfo.ImpactSenderId;
             }
         }
         EntityInfo targetObj = m_Scene.EntityManager.GetEntityInfo(targetId);
         if (null != targetObj) {
             ret = new GfxSkillSenderInfo(configData, seq, objId, entity, targetId, targetObj, scene);
         } else {
             ret = new GfxSkillSenderInfo(configData, seq, objId, entity, scene);
         }
     }
     return ret;
 }
 private void Init(GfxSkillSenderInfo senderObj, SkillInstance instance)
 {
     CopySectionList();
     CalNewSpeedWithTarget(senderObj, instance);
     m_Now = instance.CurTime / 1000.0f;
     m_SectionListCopy[0].startTime = m_Now;
     m_SectionListCopy[0].lastUpdateTime = m_Now;
     m_SectionListCopy[0].curSpeedVect = m_SectionListCopy[0].speedVect;
     m_StartTransform = new GameObject();
     if (null != senderObj.TrackEffectObj) {
         m_StartTransform.transform.position = senderObj.TrackEffectObj.transform.position;
         m_StartTransform.transform.rotation = senderObj.TrackEffectObj.transform.rotation;
     } else {
         m_StartTransform.transform.position = senderObj.GfxObj.transform.position;
         m_StartTransform.transform.rotation = senderObj.GfxObj.transform.rotation;
     }
     m_IsInited = true;
 }