示例#1
0
        private Vector3 GetTargetPostion()
        {
            Vector3    xZPosition;
            Vector3    forward;
            RaycastHit hit;

            if (this.syncWithAttackTarget)
            {
                xZPosition = (this.targetEntity.Value as BaseMonoMonster).GetAttackTarget().XZPosition;
                forward    = -this.targetEntity.Value.transform.forward;
            }
            else
            {
                xZPosition = this.targetEntity.Value.XZPosition;
                forward    = this.targetEntity.Value.transform.forward;
            }
            if (this.offsetRadius.Value != 0f)
            {
                Vector3 vector3 = (Vector3)(Quaternion.Euler(0f, this.offsetAngle.Value, 0f) * forward);
                xZPosition += (Vector3)(vector3 * this.offsetRadius.Value);
            }
            bool flag = false;
            BaseMonoAnimatorEntity component = base.GetComponent <BaseMonoAnimatorEntity>();
            Vector3 start = new Vector3(component.transform.position.x, 0.1f, component.transform.position.z);
            Vector3 end   = new Vector3(xZPosition.x, 0.1f, xZPosition.z);

            if (Physics.Linecast(start, end, out hit, (((int)1) << InLevelData.OBSTACLE_COLLIDER_LAYER) | (((int)1) << InLevelData.STAGE_COLLIDER_LAYER)))
            {
                flag = true;
            }
            if (flag)
            {
                Vector3 point      = hit.point;
                Vector3 vector11   = start - end;
                Vector3 normalized = vector11.normalized;
                float   num        = 0.1f;
                Vector3 vector8    = point + ((Vector3)(normalized * num));
                xZPosition = new Vector3(vector8.x, xZPosition.y, vector8.z);
            }
            return(xZPosition);
        }
示例#2
0
        public override void OnAwake()
        {
            BaseMonoAnimatorEntity component = base.GetComponent <BaseMonoAnimatorEntity>();

            if (component is BaseMonoAvatar)
            {
                this._aiEntity = (BaseMonoAvatar)component;
            }
            else if (component is BaseMonoMonster)
            {
                this._aiEntity = (BaseMonoMonster)component;
            }
            if (this.isRandom)
            {
                this.CD.Value = UnityEngine.Random.Range(this.minRandTime, this.maxRandTime);
            }
            else
            {
                this.CD.Value = this.defaultTime;
            }
        }
 public AbilityMonsterDefendMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this._breakDefendAniDamageRatio     = 1f;
     this._defendActionRange             = 1f;
     this._defendActionChance            = 1f;
     this._shieldLightLayer              = 3;
     this._shieldLightMax                = 1f;
     this._layerWeightTransitionDuration = 0.3f;
     this.config                     = (MonsterDefendMixin)config;
     this._defendAngle               = instancedAbility.Evaluate(this.config.DefendAngle);
     this._defendActionTimer         = new EntityTimer(instancedAbility.Evaluate(this.config.DefendActionCD));
     this._inDefendStateTimer        = new EntityTimer(instancedAbility.Evaluate(this.config.InDefendMaxTime));
     this._breakDefendAniDamageRatio = instancedAbility.Evaluate(this.config.BreakDefendAniDamageRatio);
     this._defendActionRange         = instancedAbility.Evaluate(this.config.DefendActionRange);
     this._defendActionChance        = instancedAbility.Evaluate(this.config.DefendActionChance);
     this._defendActionChance        = Mathf.Clamp(this._defendActionChance, 0f, 1f);
     this._defendActionTimer.SetActive(this.config.DefendSuccessActions.Length > 0);
     this._shieldLightLayer  = this.config.ShieldLightLayer;
     this._shieldLightMax    = Mathf.Clamp(this.config.ShieldLightMax, 0f, 1f);
     this._shieldLightMin    = Mathf.Clamp(this.config.ShieldLightMin, 0f, 1f);
     this._allowLayerControl = this.config.AllowLayerLightControl;
     this._animatorEntity    = (BaseMonoAnimatorEntity)base.entity;
 }
示例#4
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     entity.MultiAnimEventHandler(this.MultiEventID);
 }
示例#5
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     entity.TriggerEffectPattern(this.EffectPatternName);
 }
示例#6
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     entity.DeadHandler();
 }
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     entity.StopAllEffects();
 }
        public override void OnRemoved()
        {
            BaseMonoAnimatorEntity entity = base.actor.entity as BaseMonoAnimatorEntity;

            entity.onCurrentSkillIDChanged = (Action <string, string>)Delegate.Remove(entity.onCurrentSkillIDChanged, new Action <string, string>(this.OnSkillIDChanged));
        }
示例#9
0
        public static void KianaRuntimeAttachHandler(ConfigWeapon config, Transform weaponProtoTrans, BaseMonoAnimatorEntity avatar, string avatarType)
        {
            KianaWeaponAttach attach = (KianaWeaponAttach)config.Attach;

            if (!string.IsNullOrEmpty(attach.WeaponEffectPattern))
            {
                GameObject obj2 = Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar);

                GameObject obj3 = Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar);

                SetTransformParentAndReset(obj2.transform, avatar.GetAttachPoint("LeftGunPoint"));
                SetTransformParentAndReset(obj3.transform, avatar.GetAttachPoint("RightGunPoint"));
            }
        }
 public AbilityAttachModifierToAnimatorBooleanMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this.config          = (AttachModifierToAnimatorBooleanMixin)config;
     this._animatorEntity = (BaseMonoAnimatorEntity)base.entity;
 }
示例#11
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
 }
示例#12
0
        public static void BronyaRuntimeAttachHandler(ConfigWeapon config, Transform weaponProtoTrans, BaseMonoAnimatorEntity avatar, string avatarType)
        {
            BronyaWeaponAttach attach = (BronyaWeaponAttach)config.Attach;

            if (!string.IsNullOrEmpty(attach.WeaponEffectPattern))
            {
                SetTransformParentAndReset(Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar).transform, avatar.GetAttachPoint("GunPoint"));
            }
        }
示例#13
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     (entity as BaseMonoAvatar).ClearSkillTriggers();
 }
示例#14
0
 public override void HandleAnimatorEvent(BaseMonoAnimatorEntity entity)
 {
     entity.ClearAttackTarget();
 }
示例#15
0
 public override void OnAwake()
 {
     base.OnAwake();
     this._entity = base.GetComponent <BaseMonoAnimatorEntity>();
     this.TargetPosition.Value = this.GetSpawnPointPos(this.SpawnPointName);
 }
示例#16
0
        public override void OnAwake()
        {
            BaseMonoEntity component = base.GetComponent <BaseMonoEntity>();

            this._animatorEntity = (BaseMonoAnimatorEntity)component;
        }
 public AbilityAttachAdditiveVelocityMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this.config          = (AttachAdditiveVelocityMixin)config;
     this._animatorEntity = base.entity as BaseMonoAnimatorEntity;
 }
示例#18
0
        public override TaskStatus OnUpdate()
        {
            if (this.targetEntity.Value == null)
            {
                return(TaskStatus.Failure);
            }
            BaseMonoAnimatorEntity component = base.GetComponent <BaseMonoAnimatorEntity>();

            if (this.syncWithAttackTarget && ((this.targetEntity.Value as BaseMonoMonster).GetAttackTarget() == null))
            {
                return(TaskStatus.Failure);
            }
            Vector3 targetPostion = this.GetTargetPostion();

            if (this.isTeleporting)
            {
                if (this.teleportTimeSpan.Value > 0f)
                {
                    if (this.teleportTimer >= this.teleportTimeSpan.Value)
                    {
                        this.isTeleporting = false;
                    }
                }
                else if (component.gameObject.activeSelf)
                {
                    component.FireEffect("Monster_TeleportTo_Small");
                    this.isTeleporting = false;
                }
            }
            if (Vector3.Distance(component.XZPosition, targetPostion) > 1f)
            {
                if (this.teleportTimeSpan.Value > 0f)
                {
                    if (!this.isTeleporting)
                    {
                        this.teleportTimer = 0f;
                        this.isTeleporting = true;
                    }
                }
                else if (component.gameObject.activeSelf)
                {
                    component.FireEffect("Monster_TeleportFrom_Small");
                    this.isTeleporting = true;
                }
            }
            if (this.syncWithAttackTarget)
            {
                Vector3 vector2 = targetPostion - component.transform.position;
                component.transform.forward = vector2.normalized;
            }
            else
            {
                component.transform.forward = this.targetEntity.Value.transform.forward;
            }
            if (this.isTeleporting && (this.teleportTimeSpan.Value > 0f))
            {
                this.teleportTimer          += Time.deltaTime;
                component.transform.position = Vector3.Lerp(component.transform.position, targetPostion, this.teleportTimer / this.teleportTimeSpan.Value);
            }
            else
            {
                component.transform.position = targetPostion;
            }
            component.SetLocomotionBool("IsMove", (this.targetEntity.Value as BaseMonoAnimatorEntity).GetLocomotionBool("IsMove"), false);
            component.SetLocomotionBool("IsMoveHorizontal", (this.targetEntity.Value as BaseMonoAnimatorEntity).GetLocomotionBool("IsMoveHorizontal"), false);
            component.SetLocomotionFloat("MoveSpeed", (this.targetEntity.Value as BaseMonoAnimatorEntity).GetLocomotionFloat("MoveSpeed"), false);
            component.SetLocomotionFloat("AbsMoveSpeed", (this.targetEntity.Value as BaseMonoAnimatorEntity).GetLocomotionFloat("AbsMoveSpeed"), false);
            if (this.syncOneFrame && !this.isTeleporting)
            {
                return(TaskStatus.Success);
            }
            return(TaskStatus.Running);
        }
示例#19
0
 public void Init(uint runtimeID, BaseMonoAnimatorEntity owner)
 {
     base.commonConfig = owner.commonConfig;
     base.Init(runtimeID);
     this.owner = owner;
 }
示例#20
0
 public override void OnAwake()
 {
     this._entity = base.GetComponent <BaseMonoAnimatorEntity>();
 }
示例#21
0
 public abstract void HandleAnimatorEvent(BaseMonoAnimatorEntity entity);
示例#22
0
 public void Init(BaseMonoAnimatorEntity owner, BaseMonoAnimatorEntity target, ConfigMonsterAttackHint config)
 {
     this._timer      = 0f;
     this._owner      = owner;
     this._config     = config;
     this._outerState = OuterState.Glow;
     this._innerState = InnerState.Hide;
     if (config is RectAttackHint)
     {
         RectAttackHint hint = (RectAttackHint)config;
         if ((config.OffsetBase == HintOffsetBase.Target) && (target != null))
         {
             base.transform.position = target.XZPosition + ((Vector3)(target.FaceDirection * (hint.OffsetZ + (0.5f * hint.Distance))));
         }
         else if (config.OffsetBase == HintOffsetBase.Owner)
         {
             base.transform.position = owner.XZPosition + ((Vector3)(owner.FaceDirection * (hint.OffsetZ + (0.5f * hint.Distance))));
         }
         base.transform.forward = owner.FaceDirection;
         base.transform.SetLocalScaleX(hint.Width);
         base.transform.SetLocalScaleZ(hint.Distance);
         this._innerMinScale = 0f;
         this._innerMaxScale = 1f;
     }
     else
     {
         Vector3 vector5;
         if (config is CircleAttackHint)
         {
             CircleAttackHint hint2 = (CircleAttackHint)config;
             if ((config.OffsetBase == HintOffsetBase.Target) && (target != null))
             {
                 base.transform.position = target.XZPosition + ((Vector3)(target.FaceDirection * hint2.OffsetZ));
             }
             else if (config.OffsetBase == HintOffsetBase.Owner)
             {
                 base.transform.position = owner.XZPosition + ((Vector3)(owner.FaceDirection * hint2.OffsetZ));
             }
             base.transform.forward = owner.FaceDirection;
             vector5 = (Vector3)(Vector3.one * hint2.Radius);
             this.outerHint.localScale = vector5;
             this.innerHint.localScale = vector5;
             this._innerMinScale       = 0f;
             this._innerMaxScale       = hint2.Radius;
             this.outerHint.GetComponent <MeshRenderer>().material.SetFloat("_FanAngle", 6.283185f);
             this.innerHint.GetComponent <MeshRenderer>().material.SetFloat("_FanAngle", 6.283185f);
             GameObject obj2 = new GameObject("Flags");
             obj2.transform.SetParent(base.transform);
             Vector3 zero = Vector3.zero;
             zero.y = 0.04f;
             obj2.transform.localPosition = zero;
             int   num  = Mathf.Min(Mathf.FloorToInt((hint2.Radius * 7f) / this.flagGap), 6);
             float num2 = (6.283185f / ((float)num)) * 57.29578f;
             for (int i = 0; i < num; i++)
             {
                 Transform transform = UnityEngine.Object.Instantiate <Transform>(this.flag);
                 transform.SetParent(obj2.transform, false);
                 transform.gameObject.SetActive(true);
                 transform.localRotation = Quaternion.AngleAxis(num2 * i, Vector3.up);
                 Vector3 vector2 = (Vector3)(transform.localRotation * (Vector3.forward * (hint2.Radius - this.flagBorderOffset)));
                 transform.localPosition = vector2;
                 transform.GetComponent <Renderer>().sharedMaterial = this._sharedFlagMaterial;
             }
         }
         else if (config is SectorAttackHint)
         {
             SectorAttackHint hint3 = (SectorAttackHint)config;
             if ((config.OffsetBase == HintOffsetBase.Target) && (target != null))
             {
                 base.transform.position = target.XZPosition + ((Vector3)(target.FaceDirection * hint3.OffsetZ));
             }
             else if (config.OffsetBase == HintOffsetBase.Owner)
             {
                 base.transform.position = owner.XZPosition + ((Vector3)(owner.FaceDirection * hint3.OffsetZ));
             }
             base.transform.forward = owner.FaceDirection;
             vector5 = (Vector3)(Vector3.one * hint3.Radius);
             this.outerHint.localScale = vector5;
             this.innerHint.localScale = vector5;
             this._innerMinScale       = 0f;
             this._innerMaxScale       = hint3.Radius;
             this.outerHint.GetComponent <MeshRenderer>().material.SetFloat("_FanAngle", 0.01745329f * hint3.Angle);
             this.innerHint.GetComponent <MeshRenderer>().material.SetFloat("_FanAngle", 0.01745329f * hint3.Angle);
             GameObject obj3 = new GameObject("Flags");
             obj3.transform.SetParent(base.transform);
             Vector3 vector3 = Vector3.zero;
             vector3.y = 0.04f;
             obj3.transform.localPosition = vector3;
             obj3.transform.forward       = owner.FaceDirection;
             int   num4 = Mathf.Min(Mathf.FloorToInt((((((hint3.Radius * 7f) * 0.01745329f) * hint3.Angle) / 3.141593f) / 2f) / this.flagGap), 6);
             float num5 = ((0.01745329f * hint3.Angle) / ((float)num4)) * 57.29578f;
             bool  flag = (num4 % 2) == 0;
             for (int j = 0; j < num4; j++)
             {
                 Transform transform2 = UnityEngine.Object.Instantiate <Transform>(this.flag);
                 transform2.SetParent(obj3.transform, false);
                 transform2.gameObject.SetActive(true);
                 if (flag)
                 {
                     transform2.localRotation = ((j % 2) != 0) ? Quaternion.AngleAxis(-num5 * ((j / 2) + 0.5f), Vector3.up) : Quaternion.AngleAxis(num5 * ((j / 2) + 0.5f), Vector3.up);
                 }
                 else if (j == 0)
                 {
                     transform2.localRotation = Quaternion.AngleAxis(0f, Vector3.up);
                 }
                 else
                 {
                     transform2.localRotation = ((j % 2) != 0) ? Quaternion.AngleAxis(-num5 * j, Vector3.up) : Quaternion.AngleAxis(num5 * j, Vector3.up);
                 }
                 Vector3 vector4 = (Vector3)(transform2.localRotation * (Vector3.forward * (hint3.Radius - this.flagBorderOffset)));
                 transform2.localPosition = vector4;
                 transform2.GetComponent <Renderer>().sharedMaterial = this._sharedFlagMaterial;
             }
         }
     }
 }
示例#23
0
 public AbilityAvatarLimitSkillByStaminaMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this.config          = (AvatarLimitSkillByStaminaMixin)config;
     this._animatorEntity = (BaseMonoAnimatorEntity)base.entity;
     this._avatarActor    = (AvatarActor)base.actor;
 }
示例#24
0
 public static void HimekoRuntimeAttachHandler(ConfigWeapon config, Transform weaponProtoTrans, BaseMonoAnimatorEntity himeko, string avatarType)
 {
 }
示例#25
0
 public AbilityAvatarWeaponOverHeatMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this.config          = (AvatarWeaponOverHeatMixin)config;
     this._animatorEntity = (BaseMonoAnimatorEntity)base.entity;
     this._avatarActor    = (AvatarActor)base.actor;
 }
示例#26
0
        public static void MeiRuntimeAttachHandler(ConfigWeapon config, Transform weaponProtoTrans, BaseMonoAnimatorEntity avatar, string avatarType)
        {
            MeiWeaponAttach attach = (MeiWeaponAttach)config.Attach;

            if (!string.IsNullOrEmpty(attach.WeaponEffectPattern))
            {
                if ((avatarType == "Mei_C1_DH") || (avatarType == "Mei_C3_WS"))
                {
                    SetTransformParentAndReset(Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar).transform, avatar.GetAttachPoint("WeaponRightHand"));
                }
                else if ((avatarType == "Mei_C2_CK") || (avatarType == "Mei_C4_LD"))
                {
                    GameObject obj3 = Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar);

                    GameObject obj4 = Singleton <EffectManager> .Instance.CreateGroupedEffectPattern(attach.WeaponEffectPattern, avatar);

                    SetTransformParentAndReset(obj3.transform, avatar.GetAttachPoint("WeaponLeftHand"));
                    SetTransformParentAndReset(obj4.transform, avatar.GetAttachPoint("WeaponRightHand"));
                }
            }
        }
示例#27
0
 public ShaderLerpPlugin(BaseMonoAnimatorEntity entity) : base(entity)
 {
     this._lerpInstances    = new List <LerpInstance>();
     this._newShaderEntries = new List <Tuple <E_ShaderData, int> >();
     this._animatorEntity   = entity;
 }