示例#1
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == skillCmpt || null == sword)
            {
                return;
            }
            PEActionParamVVNN paramVVNN = para as PEActionParamVVNN;

            trans.position = paramVVNN.vec1;
            m_AttackDir    = paramVVNN.vec2;
            if (m_AttackDir == Vector3.zero)
            {
                m_AttackDir = trans.forward;
            }
            m_CombTime        = paramVVNN.n1;
            m_AttackModeIndex = paramVVNN.n2;
            ApplySkill();
            anim.ResetTrigger("ResetFullBody");
            anim.SetBool("AttackLand", false);
            motionMgr.SetMaskState(PEActionMask.SwordAttack, true);
            m_WaitInput = false;
            m_TstAttack = false;
            m_EndAction = false;
            OnStartAttack();
        }
示例#2
0
        public override bool CanDoAction(PEActionParam para = null)
        {
            if (motionMgr.IsActionRunning(PEActionType.Build))
            {
                PeTipMsg.Register(PELocalization.GetString(9500246), PeTipMsg.EMsgLevel.Warning);
                return(false);
            }

            PEActionParamDrive paramDrive = para as PEActionParamDrive;

            m_DrivingController = paramDrive.controller;
            if (m_DrivingController == null)
            {
                return(false);
            }
            ItemAsset.ItemObject item = m_DrivingController.itemObject;
            if (item != null && skillTreeMgr != null && RandomMapConfig.useSkillTree)
            {
                if (!skillTreeMgr.CheckDriveEnable(item.protoData.itemClassId, item.protoData.level))
                {
                    return(false);
                }
            }
            return(true);
        }
示例#3
0
        public override void DoAction(PEActionParam para = null)
        {
            motionMgr.SetMaskState(PEActionMask.GetOnTrain, true);

            PEActionParamS paramS = para as PEActionParamS;

            mAnim = paramS.str;
            if (null != equipCmpt)
            {
                equipCmpt.HideEquipmentByVehicle(true);
            }
            if (!string.IsNullOrEmpty(mAnim) && null != anim)
            {
                anim.SetBool(mAnim, true);
            }
            if (null != viewCmpt)
            {
                viewCmpt.ActivateInjured(false);
            }
            if (null != ikCmpt)
            {
                ikCmpt.ikEnable = false;
            }
            if (motionMgr.Entity == MainPlayer.Instance.entity)
            {
                PeCamera.SetBool("OnMonorail", true);
            }
        }
示例#4
0
        public override void DoAction(PEActionParam para)
        {
            if (null == mRopeGun)
            {
                return;
            }
            if (!viewCmpt.hasView)
            {
                return;
            }
            m_LastHookPos = mRopeGun.hook.position;
            motionMgr.SetMaskState(PEActionMask.RopeGunShoot, true);
            mState             = HookGunState.Shooting;
            m_ShootDir         = (ikCmpt.aimTargetPos - mRopeGun.gunMuzzle.position).normalized;
            m_CurrentMoveIndex = 0;
            PeCamera.SetFloat("Sensitivity Multiplier", 0);
            AudioManager.instance.Create(mRopeGun.gunMuzzle.position, mRopeGun.fireSound);
//			Collider[] hitInfos = Physics.OverlapSphere(mRopeGun.gunMuzzle.position, 0.2f, mRopeGun.effectLayer.value, QueryTriggerInteraction.Ignore);
//			for(int i = 0; i < hitInfos.Length; ++i)
//			{
//				if(!hitInfos[i].transform.IsChildOf(entity.transform))
//				{
//					mState = HookGunState.Null;
//					return;
//				}
//			}
        }
示例#5
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == skillCmpt || null == gun)
            {
                return;
            }
            PEActionParamB paramB = para as PEActionParamB;

            m_EndAfterShoot = paramB.b;
            m_EndFire       = false;
            m_HoldFireTime  = 0;
            switch (gun.m_ShootMode)
            {
            case ShootMode.SingleShoot:
            case ShootMode.MultiShoot:
                if (gun.m_AmmoType == AmmoType.Bullet)
                {
                    if (gun.magazineValue > 0)
                    {
                        if (Time.time - m_LastShootTime > gun.m_FireRate)
                        {
                            OnFire(1);
                        }
                    }
                    else
                    {
                        if (m_IgnoreItem || (null != packageCmpt && packageCmpt.GetItemCount(gun.curItemID) > 0))
                        {
                            PEActionParamN param = PEActionParamN.param;
                            param.n = gun.curAmmoItemIndex;
                            motionMgr.DoAction(PEActionType.GunReload, param);
                        }
                        else
                        {
                            skillCmpt.StartSkill(skillCmpt, gun.m_DryFireSoundID);
                        }
                        //audiomanager.instance.create(gun.m_aimattr.m_aimtrans.position,
                        //                             gun.m_dryfiresoundid,
                        //                             gun.m_aimattr.m_aimtrans);
                    }
                }
                else
                {
                    if (gun.magazineValue >= gun.m_EnergyPerShoot)
                    {
                        if (Time.time - m_LastShootTime > gun.m_FireRate)
                        {
                            OnFire(gun.m_EnergyPerShoot);
                        }
                    }
                    else
                    {
                        AudioManager.instance.Create(gun.m_AimAttr.m_AimTrans.position,
                                                     gun.m_DryFireSoundID,
                                                     gun.m_AimAttr.m_AimTrans);
                    }
                }
                break;
            }
        }
示例#6
0
 public override bool CanDoAction(PEActionParam para = null)
 {
     if (null == skillCmpt || null == gun || null == entity)
     {
         return(false);
     }
     if (gun.durability <= PETools.PEMath.Epsilon)
     {
         entity.SendMsg(EMsg.Action_DurabilityDeficiency);
         return(false);
     }
     if (m_IgnoreItem)
     {
         return(true);
     }
     if (gun.m_AmmoType == AmmoType.Bullet)
     {
         return(true);
     }
     else if (gun.magazineValue >= gun.m_EnergyPerShoot)
     {
         return(true);
     }
     return(false);
 }
示例#7
0
        public override void DoAction(PEActionParam para = null)
        {
            motionMgr.SetMaskState(PEActionMask.OnVehicle, true);
            PEActionParamDrive paramDrive = para as PEActionParamDrive;

            m_DrivingController = paramDrive.controller;
            int seatIndex = paramDrive.seatIndex;

            m_DrivingController.GetOn(motionMgr.Entity, seatIndex);

            motionMgr.FreezePhyState(GetType(), true);
            motionMgr.FreezeCol = true;

            if (null != ikCmpt)
            {
                ikCmpt.ikEnable = false;
            }
            if (null != equipCmpt)
            {
                equipCmpt.HideEquipmentByVehicle(true);
            }
            if (null != motionMgr.Entity.biologyViewCmpt)
            {
                motionMgr.Entity.biologyViewCmpt.ActivateInjured(false);
            }

            motionMgr.Entity.SendMsg(EMsg.Action_GetOnVehicle, true, m_DrivingController);
        }
示例#8
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null != skillCmpt)
            {
                if (skillCmpt.GetAttribute(AttribType.Hp) < 1)
                {
                    skillCmpt.SetAttribute(AttribType.Hp, 1f);
                }
                skillCmpt.SetAttribute(AttribType.Oxygen, skillCmpt.GetAttribute(AttribType.OxygenMax));
                skillCmpt.SetAttribute(AttribType.Stamina, skillCmpt.GetAttribute(AttribType.StaminaMax));
            }

            motionMgr.SetMaskState(PEActionMask.Revive, true);
            motionMgr.FreezePhyState(GetType(), true);
            motionMgr.Entity.SendMsg(EMsg.State_Revive);

            PEActionParamB paramB = para as PEActionParamB;

            bool immediately = paramB.b;

            if (null != viewCmpt)
            {
                viewCmpt.DeactivateRagdoll(immediately);
                viewCmpt.ActivateInjured(false);
            }
        }
示例#9
0
        public override void DoAction(PEActionParam para = null)
        {
            PEActionParamVQSN paramVQSN = para as PEActionParamVQSN;

            motionMgr.SetMaskState(PEActionMask.Sit, true);
            m_EndAction = false;

            if (null != trans)
            {
                trans.position = paramVQSN.vec;
                trans.rotation = paramVQSN.q;
            }

            if (null != anim)
            {
                m_AnimName = paramVQSN.str;
                anim.SetBool(m_AnimName, true);
                anim.ResetTrigger("ResetFullBody");
            }
            m_BuffID = paramVQSN.n;
            if (0 != m_BuffID && null != motionMgr.Entity.skEntity)
            {
                PESkEntity.MountBuff(motionMgr.Entity.skEntity, m_BuffID, new System.Collections.Generic.List <int>(), new System.Collections.Generic.List <float>());
            }
            motionMgr.FreezePhyState(GetType(), true);
            if (null != motionMgr.Entity.IKCmpt)
            {
                motionMgr.Entity.IKCmpt.ikEnable = false;
            }
        }
示例#10
0
        public override bool CanDoAction(PEActionParam para = null)
        {
            PEActionParamS paramS  = para as PEActionParamS;
            string         animStr = paramS.str;

            return(!string.IsNullOrEmpty(animStr) && animStr != "0");
        }
示例#11
0
        public override void DoAction(PEActionParam para = null)
        {
            motionMgr.SetMaskState(PEActionMask.JetPack, true);
            m_MoveDir = Vector3.zero;
            if (null != jetPack)
            {
                jetPack.m_EffectObj.SetActive(true);
                if (0 != jetPack.m_StartSoundID && null != jetPack.m_EffectObj)
                {
                    m_Audio = AudioManager.instance.Create(jetPack.m_EffectObj.transform.position,
                                                           jetPack.m_StartSoundID,
                                                           jetPack.m_EffectObj.transform);
                }
            }

            if (null != jetPackLogic && null != m_PhyCtrl)
            {
                m_PhyCtrl.ResetSpeed(jetPackLogic.m_BoostHorizonalSpeed);
                m_PhyCtrl.desiredMovementDirection = m_PhyCtrl.currentDesiredMovementDirection;
            }

            motionMgr.StartCoroutine(ChangeAudio());

            if (null != anim)
            {
                anim.ResetTrigger("EndJump");
            }
        }
示例#12
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == m_Axe)
            {
                return;
            }

            motionMgr.SetMaskState(PEActionMask.Fell, true);

            m_EndAction = false;
            m_EndAnim   = false;

            if (null != anim)
            {
                anim.ResetTrigger("ResetFullBody");
                anim.SetBool(m_Axe.fellAnim, true);
            }

            m_FixTime = 3f;

            ApplyStaminaCost();

            if (null != startFell)
            {
                startFell(treeInfo._treeInfo);
            }
            if (null != hpChange)
            {
                hpChange(treeInfo._treeInfo, SkEntitySubTerrain.Instance.GetTreeHP(treeInfo.WorldPos) / MaxHp);
            }
        }
        public override void DoAction(PEActionParam para = null)
        {
            if (null != digTool)
            {
                motionMgr.SetMaskState(digTool.m_DigMask, true);
                m_AnimName = digTool.m_AnimName;

                anim.ResetTrigger("ResetFullBody");
                anim.SetBool(m_AnimName, true);

                m_EndDig  = false;
                m_EndAnim = false;
            }
            m_DigPos = m_CurrentPos;


            if (null != m_PhyCtrl)
            {
                m_PhyCtrl.m_SubAcc = Vector3.down;
            }

            m_FirstDig = true;

            ApplyStaminaCost();
        }
示例#14
0
 public void DoActionImmediately(PEActionType type, PEActionParam para = null)
 {
     if (HasAction(type))
     {
         if (IsActionRunning(type))
         {
             m_ActionDic[(int)type].ResetAction(para);
         }
         else
         {
             if (null != m_SkEntity._net)
             {
                 ((SkNetworkInterface)m_SkEntity._net).SendDoAction(type, para);
             }
             ActionRelationData data = ActionRelationData.GetData(type);
             if (null != onActionStart)
             {
                 onActionStart(type);
             }
             RunningAction runningAction = GetRunningAction();
             runningAction.Do(m_ActionDic[(int)type], data, para, true);
             m_RunningAction[(int)type] = runningAction;
         }
     }
 }
示例#15
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == trans || null == m_Param)
            {
                return;
            }

            m_IsBlockRepulsed = motionMgr.IsActionRunning(PEActionType.HoldShield) && Vector3.Angle(-entity.forward, m_MoveDir) < 30f;

            PEActionParamVVF paramVVF = PEActionParamVVF.param;

            motionMgr.SetMaskState(PEActionMask.Repulsed, true);
            trans.position  = (trans.position + paramVVF.vec1) / 2f;
            m_MoveDir       = paramVVF.vec2;
            m_MoveDir       = Vector3.ProjectOnPlane(m_MoveDir, trans.existent.up).normalized;
            m_ForcePower    = paramVVF.f * (m_IsBlockRepulsed ? BlockForceScale : 1f);
            m_AddForceTrans = m_Param.m_ApplyWentflyBone;

            m_MoveVelocity    = m_Param.m_ForceToVelocity.Evaluate(m_ForcePower);
            m_MoveTime        = m_Param.m_ForceToMoveTime.Evaluate(m_ForcePower);
            m_MoveStopTime    = m_Param.m_ApplyMoveStopTime.Evaluate(m_ForcePower);
            m_WentflyTime     = m_Param.m_WentflyTimeCurve.Evaluate(m_ForcePower);
            m_ElapseTime      = 0f;
            m_ApplyStopEffect = false;

            if (null != anim)
            {
                anim.SetFloat("SheildBlockF", m_IsBlockRepulsed ? 1f: 0f);
            }

            if (null != m_Move)
            {
                m_Move.ApplyForce(m_MoveVelocity * m_MoveDir, ForceMode.VelocityChange);
            }
        }
示例#16
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == viewCmpt)
            {
                return;
            }
            motionMgr.SetMaskState(PEActionMask.Wentfly, true);

            PEActionParamVFNS paramVFNS = para as PEActionParamVFNS;

            Vector3 force = paramVFNS.vec * paramVFNS.f;

            PeEntity entity = EntityMgr.Instance.Get(paramVFNS.n);

            motionMgr.FreezePhyState(GetType(), true);

            if (null != entity)
            {
                Transform hitColTran = entity.biologyViewCmpt.GetRagdollTransform(paramVFNS.str);
                if (null != hitColTran)
                {
                    RagdollHitInfo hitInfo = new RagdollHitInfo();
                    hitInfo.hitTransform = hitColTran;
                    hitInfo.hitPoint     = hitColTran.position;
                    hitInfo.hitForce     = force;
                    hitInfo.hitNormal    = -force.normalized;
                    viewCmpt.ActivateRagdoll(hitInfo, false);
                }
            }
            if (null != phyCtrl)
            {
                phyCtrl.desiredMovementDirection = Vector3.zero;
                phyCtrl.CancelMoveRequest();
            }
        }
示例#17
0
 public override bool CanDoAction(PEActionParam para = null)
 {
     if (null != jetPackLogic && jetPackLogic.enCurrent >= jetPackLogic.m_EnergyThreshold)
     {
         return(true);
     }
     return(false);
 }
示例#18
0
 public bool DoAction(PEActionType type, PEActionParam para)
 {
     if (m_Motion != null)
     {
         return(m_Motion.DoAction(type, para));
     }
     return(false);
 }
示例#19
0
 public override bool CanDoAction(PEActionParam para = null)
 {
     if (null != waterPitcher && null != skillCmpt && null != trans)
     {
         return(VFVoxelWater.self.IsInWater(trans.position));
     }
     return(false);
 }
示例#20
0
 public override void DoAction(PEActionParam para = null)
 {
     if (null != anim)
     {
         anim.SetTrigger("BeHit");
     }
     motionMgr.SetMaskState(PEActionMask.Whacked, true);
 }
示例#21
0
 public override bool CanDoAction(PEActionParam para = null)
 {
     if (null != waterPump && null != skillCmpt && null != waterPump.m_AimAttr.m_AimTrans)
     {
         return(VFVoxelWater.self.IsInWater(waterPump.m_AimAttr.m_AimTrans.position));
     }
     return(false);
 }
示例#22
0
        public override bool CanDoAction(PEActionParam para = null)
        {
            if (m_IgnoreItem)
            {
                return(true);
            }

            return(null != packageCmpt && null != bow && packageCmpt.GetItemCount(bow.curItemID) > 0);
        }
示例#23
0
 public override void DoAction(PEActionParam para = null)
 {
     if (null != anim)
     {
         anim.ResetTrigger("ResetFullBody");
         anim.SetTrigger("Gather");
     }
     motionMgr.SetMaskState(PEActionMask.PickUpItem, true);
 }
示例#24
0
        public override bool CanDoAction(PEActionParam para = null)
        {
            if (null != glider && null != m_PhyCtrl)
            {
                return(m_PhyCtrl.velocity.y < glider.m_TurnOnSpeed);
            }

            return(false);
        }
示例#25
0
        public override void DoAction(PEActionParam para = null)
        {
            motionMgr.SetMaskState(PEActionMask.Stuned, true);

            if (null != anim)
            {
                anim.speed = 0f;
            }
        }
示例#26
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null != anim)
            {
                anim.ResetTrigger("ResetFullBody");
                anim.SetTrigger("Gather");
            }

            m_EndAnim = false;
        }
        public override bool StartOperate(IOperator oper, EOperationMask mask, PEActionParam para)
        {
            Operation_Single single = GetStartOperate(mask);

            if (single != null)
            {
                return(single.StartOperate(oper, mask, para));
            }
            return(false);
        }
示例#28
0
        public override void DoAction(PEActionParam para = null)
        {
            if (null == anim || null == aimAbleEquip)
            {
                return;
            }
            base.DoAction(para);

            InitAimPoint();
        }
示例#29
0
 public override void ResetAction(PEActionParam para = null)
 {
     if (null != viewCmpt)
     {
         if (!viewCmpt.IsRagdoll)
         {
             viewCmpt.ActivateRagdoll(null, false);
         }
     }
 }
示例#30
0
        public override bool Do(IOperator oper, PEActionParam para)
        {
            bool execRusult = oper.DoAction(PEActionType.Sleep, para);

            if (execRusult && mCurSleep != null)
            {
                mCurSleep.AddOperator(oper);
            }
            return(execRusult);
        }