// Token: 0x060029AC RID: 10668 RVA: 0x000AF93C File Offset: 0x000ADB3C
 public override void FixedUpdate()
 {
     base.FixedUpdate();
     if (base.fixedAge >= this.duration / 2f && base.isAuthority && !this.hasInputJump)
     {
         this.hasInputJump = true;
         base.characterMotor.moveDirection = base.inputBank.moveVector;
         GenericCharacterMain.ApplyJumpVelocity(base.characterMotor, base.characterBody, 1f, 1f);
     }
     if (base.fixedAge >= this.duration && base.isAuthority)
     {
         this.outer.SetNextStateToMain();
     }
 }
示例#2
0
 // Token: 0x06002A23 RID: 10787 RVA: 0x000B12C8 File Offset: 0x000AF4C8
 public virtual void ProcessJump()
 {
     if (this.hasCharacterMotor)
     {
         bool flag  = false;
         bool flag2 = false;
         if (this.jumpInputReceived && base.characterBody && base.characterMotor.jumpCount < base.characterBody.maxJumpCount)
         {
             int   itemCount       = base.characterBody.inventory.GetItemCount(ItemIndex.JumpBoost);
             float horizontalBonus = 1f;
             float verticalBonus   = 1f;
             if (base.characterMotor.jumpCount >= base.characterBody.baseJumpCount)
             {
                 flag            = true;
                 horizontalBonus = 1.5f;
                 verticalBonus   = 1.5f;
             }
             else if ((float)itemCount > 0f && base.characterBody.isSprinting)
             {
                 flag2 = true;
                 float num  = Mathf.Sqrt(10f * (float)itemCount / (base.characterBody.acceleration * base.characterMotor.airControl));
                 float num2 = base.characterBody.moveSpeed / (base.characterBody.acceleration * base.characterMotor.airControl);
                 horizontalBonus = (num + num2) / num2;
             }
             GenericCharacterMain.ApplyJumpVelocity(base.characterMotor, base.characterBody, horizontalBonus, verticalBonus);
             if (this.hasModelAnimator)
             {
                 int layerIndex = base.modelAnimator.GetLayerIndex("Body");
                 if (layerIndex >= 0)
                 {
                     if (base.characterMotor.jumpCount == 0 || base.characterBody.baseJumpCount == 1)
                     {
                         base.modelAnimator.CrossFade("Jump", this.smoothingParameters.intoJumpTransitionTime, layerIndex);
                     }
                     else
                     {
                         base.modelAnimator.CrossFade("BonusJump", this.smoothingParameters.intoJumpTransitionTime, layerIndex);
                     }
                 }
             }
             if (flag)
             {
                 EffectManager.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/FeatherEffect"), new EffectData
                 {
                     origin = base.characterBody.footPosition
                 }, true);
             }
             else if (base.characterMotor.jumpCount > 0)
             {
                 EffectManager.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/ImpactEffects/CharacterLandImpact"), new EffectData
                 {
                     origin = base.characterBody.footPosition,
                     scale  = base.characterBody.radius
                 }, true);
             }
             if (flag2)
             {
                 EffectManager.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/BoostJumpEffect"), new EffectData
                 {
                     origin   = base.characterBody.footPosition,
                     rotation = Util.QuaternionSafeLookRotation(base.characterMotor.velocity)
                 }, true);
             }
             base.characterMotor.jumpCount++;
         }
     }
 }