private void ProcessInput(ref HumanController.InputSample sample) { bool flag; bool flag1; CCMotor.InputFrame movementScale = new CCMotor.InputFrame(); float single; float single1; CCMotor cCMotor = base.ccmotor; if (!cCMotor) { flag1 = false; flag = true; } else { flag = cCMotor.isGrounded; flag1 = cCMotor.isSliding; if (!flag && !flag1) { sample.sprint = false; sample.crouch = false; sample.aim = false; sample.info__crouchBlocked = false; if (!this.wasInAir) { this.wasInAir = true; this.magnitudeAir = cCMotor.input.moveDirection.magnitude; this.midairStartPos = base.transform.position; } this.lastFrameVelocity = cCMotor.velocity; } else if (this.wasInAir) { this.wasInAir = false; this.magnitudeAir = 1f; this.landingSpeedPenaltyTime = 0f; if (base.transform.position.y < this.midairStartPos.y && Mathf.Abs(base.transform.position.y - this.midairStartPos.y) > 2f) { base.idMain.GetLocal <FallDamage>().SendFallImpact(this.lastFrameVelocity); } this.lastFrameVelocity = Vector3.zero; this.midairStartPos = Vector3.zero; } bool flag2 = (sample.crouch ? true : sample.info__crouchBlocked); movementScale.jump = sample.jump; movementScale.moveDirection.x = sample.strafe; movementScale.moveDirection.y = 0f; movementScale.moveDirection.z = sample.walk; movementScale.crouchSpeed = (!sample.crouch ? 1f : -1f); if (movementScale.moveDirection == Vector3.zero) { this.sprinting = false; this.exitingSprint = false; this.sprintTime = 0f; this.crouchTime = (!sample.crouch ? 0f : this.controlConfig.curveCrouchMulSpeedByTime.GetEndTime()); this.magnitudeAir = 1f; } else { float single2 = movementScale.moveDirection.magnitude; if (single2 < 1f) { movementScale.moveDirection = movementScale.moveDirection / single2; single2 = single2 * single2; movementScale.moveDirection = movementScale.moveDirection * single2; } else if (single2 > 1f) { movementScale.moveDirection = movementScale.moveDirection / single2; } if (HumanController.InputSample.MovementScale < 1f) { if (HumanController.InputSample.MovementScale <= 0f) { movementScale.moveDirection = Vector3.zero; } else { movementScale.moveDirection = movementScale.moveDirection * HumanController.InputSample.MovementScale; } } Vector3 vector3 = movementScale.moveDirection; vector3.x = vector3.x * this.controlConfig.sprintScaleX; vector3.z = vector3.z * this.controlConfig.sprintScaleY; if (!sample.sprint || flag2 || sample.aim) { sample.sprint = false; single = -Time.deltaTime; } else { single = Time.deltaTime * this.sprintInMulTime; } movementScale.moveDirection = movementScale.moveDirection + (vector3 * this.controlConfig.curveSprintAddSpeedByTime.EvaluateClampedTime(ref this.sprintTime, single)); single1 = (!flag2 ? -Time.deltaTime : Time.deltaTime * this.crouchInMulTime); movementScale.moveDirection = movementScale.moveDirection * this.controlConfig.curveCrouchMulSpeedByTime.EvaluateClampedTime(ref this.crouchTime, single1); movementScale.moveDirection = base.transform.TransformDirection(movementScale.moveDirection); if (!this.wasInAir) { movementScale.moveDirection = movementScale.moveDirection * this.controlConfig.curveLandingSpeedPenalty.EvaluateClampedTime(ref this.landingSpeedPenaltyTime, Time.deltaTime); } else { float single3 = movementScale.moveDirection.magnitude; if (!Mathf.Approximately(single3, this.magnitudeAir)) { movementScale.moveDirection = movementScale.moveDirection / single3; movementScale.moveDirection = movementScale.moveDirection * this.magnitudeAir; } } } if (DebugInput.GetKey(KeyCode.H)) { movementScale.moveDirection = movementScale.moveDirection * 100f; } cCMotor.input = movementScale; if (cCMotor.stepMode == CCMotor.StepMode.Elsewhere) { cCMotor.Step(); } } Character character = base.idMain; Crouchable crouchable = character.crouchable; if (character) { Angle2 angle2 = base.eyesAngles; Angle2 angle21 = base.eyesAngles; angle2.yaw = Mathf.DeltaAngle(0f, angle21.yaw + sample.yaw); angle2.pitch = base.ClampPitch(angle2.pitch + sample.pitch); base.eyesAngles = angle2; ushort num = character.stateFlags.flags; if (crouchable) { this.crouch_smoothing.AddSeconds((double)Time.deltaTime); crouchable.LocalPlayerUpdateCrouchState(cCMotor, ref sample.crouch, ref sample.info__crouchBlocked, ref this.crouch_smoothing); } int num1 = (!sample.aim ? 0 : 4) | (!sample.sprint ? 0 : 2) | (!sample.attack ? 0 : 8) | (!sample.attack2 ? 0 : 256) | (!sample.crouch ? 0 : 1) | (sample.strafe != 0f || sample.walk != 0f ? 64 : 0) | (!LockCursorManager.IsLocked() ? 128 : 0) | (!flag ? 16 : 0) | (!flag1 ? 0 : 32) | (!this.bleeding ? 0 : 512) | (!sample.lamp ? 0 : 2048) | (!sample.laser ? 0 : 4096) | (!sample.info__crouchBlocked ? 0 : 1024); character.stateFlags = num1; if (num != num1) { character.Signal_State_FlagsChanged(false); } } this.crouch_was_blocked = sample.info__crouchBlocked; if (sample.inventory) { RPOS.Toggle(); } if (Input.GetKeyDown(KeyCode.Escape)) { RPOS.Hide(); } }
private void ProcessInput(ref InputSample sample) { bool isGrounded; bool isSliding; CCMotor ccmotor = base.ccmotor; if (ccmotor != null) { CCMotor.InputFrame frame; isGrounded = ccmotor.isGrounded; isSliding = ccmotor.isSliding; if (!isGrounded && !isSliding) { sample.sprint = false; sample.crouch = false; sample.aim = false; sample.info__crouchBlocked = false; if (!this.wasInAir) { this.wasInAir = true; this.magnitudeAir = ccmotor.input.moveDirection.magnitude; this.midairStartPos = base.transform.position; } this.lastFrameVelocity = ccmotor.velocity; } else if (this.wasInAir) { this.wasInAir = false; this.magnitudeAir = 1f; this.landingSpeedPenaltyTime = 0f; if ((base.transform.position.y < this.midairStartPos.y) && (Mathf.Abs((float)(base.transform.position.y - this.midairStartPos.y)) > 2f)) { base.idMain.GetLocal <FallDamage>().SendFallImpact(this.lastFrameVelocity); } this.lastFrameVelocity = Vector3.zero; this.midairStartPos = Vector3.zero; } bool flag3 = sample.crouch || sample.info__crouchBlocked; frame.jump = sample.jump; frame.moveDirection.x = sample.strafe; frame.moveDirection.y = 0f; frame.moveDirection.z = sample.walk; frame.crouchSpeed = !sample.crouch ? 1f : -1f; if (frame.moveDirection != Vector3.zero) { float num2; float num3; float magnitude = frame.moveDirection.magnitude; if (magnitude < 1f) { frame.moveDirection = (Vector3)(frame.moveDirection / magnitude); magnitude *= magnitude; frame.moveDirection = (Vector3)(frame.moveDirection * magnitude); } else if (magnitude > 1f) { frame.moveDirection = (Vector3)(frame.moveDirection / magnitude); } if (InputSample.MovementScale < 1f) { if (InputSample.MovementScale > 0f) { frame.moveDirection = (Vector3)(frame.moveDirection * InputSample.MovementScale); } else { frame.moveDirection = Vector3.zero; } } Vector3 moveDirection = frame.moveDirection; moveDirection.x *= this.controlConfig.sprintScaleX; moveDirection.z *= this.controlConfig.sprintScaleY; if ((sample.sprint && !flag3) && !sample.aim) { num2 = Time.deltaTime * this.sprintInMulTime; } else { sample.sprint = false; num2 = -Time.deltaTime; } frame.moveDirection += (Vector3)(moveDirection * this.controlConfig.curveSprintAddSpeedByTime.EvaluateClampedTime(ref this.sprintTime, num2)); if (flag3) { num3 = Time.deltaTime * this.crouchInMulTime; } else { num3 = -Time.deltaTime; } frame.moveDirection = (Vector3)(frame.moveDirection * this.controlConfig.curveCrouchMulSpeedByTime.EvaluateClampedTime(ref this.crouchTime, num3)); frame.moveDirection = base.transform.TransformDirection(frame.moveDirection); if (this.wasInAir) { float a = frame.moveDirection.magnitude; if (!Mathf.Approximately(a, this.magnitudeAir)) { frame.moveDirection = (Vector3)(frame.moveDirection / a); frame.moveDirection = (Vector3)(frame.moveDirection * this.magnitudeAir); } } else { frame.moveDirection = (Vector3)(frame.moveDirection * this.controlConfig.curveLandingSpeedPenalty.EvaluateClampedTime(ref this.landingSpeedPenaltyTime, Time.deltaTime)); } } else { this.sprinting = false; this.exitingSprint = false; this.sprintTime = 0f; this.crouchTime = !sample.crouch ? 0f : this.controlConfig.curveCrouchMulSpeedByTime.GetEndTime(); this.magnitudeAir = 1f; } if (DebugInput.GetKey(KeyCode.H)) { frame.moveDirection = (Vector3)(frame.moveDirection * 100f); } ccmotor.input = frame; if (ccmotor.stepMode == CCMotor.StepMode.Elsewhere) { ccmotor.Step(); } } else { isSliding = false; isGrounded = true; } Character idMain = base.idMain; Crouchable crouchable = idMain.crouchable; if (idMain != null) { Angle2 eyesAngles = base.eyesAngles; eyesAngles.yaw = Mathf.DeltaAngle(0f, base.eyesAngles.yaw + sample.yaw); eyesAngles.pitch = base.ClampPitch((float)(eyesAngles.pitch + sample.pitch)); base.eyesAngles = eyesAngles; ushort flags = idMain.stateFlags.flags; if (crouchable != null) { this.crouch_smoothing.AddSeconds((double)Time.deltaTime); crouchable.LocalPlayerUpdateCrouchState(ccmotor, ref sample.crouch, ref sample.info__crouchBlocked, ref this.crouch_smoothing); } int num6 = ((((((((((((!sample.aim ? 0 : 4) | (!sample.sprint ? 0 : 2)) | (!sample.attack ? 0 : 8)) | (!sample.attack2 ? 0 : 0x100)) | (!sample.crouch ? 0 : 1)) | (((sample.strafe == 0f) && (sample.walk == 0f)) ? 0 : 0x40)) | (!LockCursorManager.IsLocked() ? 0x80 : 0)) | (!isGrounded ? 0x10 : 0)) | (!isSliding ? 0 : 0x20)) | (!this.bleeding ? 0 : 0x200)) | (!sample.lamp ? 0 : 0x800)) | (!sample.laser ? 0 : 0x1000)) | (!sample.info__crouchBlocked ? 0 : 0x400); idMain.stateFlags = num6; if (flags != num6) { idMain.Signal_State_FlagsChanged(false); } } this.crouch_was_blocked = sample.info__crouchBlocked; if (sample.inventory) { RPOS.Toggle(); } if (Input.GetKeyDown(KeyCode.Escape)) { RPOS.Hide(); } }