private void ModifyKickbackGroup(KickbackGroup kickbackGroup, KickbackGroup baseKickbackGroup, RifleKickbackModifierArg arg) { ModifyKickback(kickbackGroup.Air, baseKickbackGroup.Air, arg); ModifyKickback(kickbackGroup.Base, baseKickbackGroup.Base, arg); ModifyKickback(kickbackGroup.Duck, baseKickbackGroup.Duck, arg); ModifyKickback(kickbackGroup.FastMove, baseKickbackGroup.FastMove, arg); ModifyKickback(kickbackGroup.Prone, baseKickbackGroup.Prone, arg); }
public override void AfterFireBullet(IPlayerWeaponState playerWeapon, IWeaponCmd cmd, int bullet) { KickbackGroup kickbackGroup = null; var hOffsetFactor = 1f; var vOffsetFactor = 1f; if (playerWeapon.IsAiming) { kickbackGroup = _config.Aiming; hOffsetFactor = _config.Aiming.HPunchOffsetFactor; vOffsetFactor = _config.Aiming.VPunchOffsetFactor; Logger.DebugFormat("animing offset {0}, {1}", hOffsetFactor, vOffsetFactor); } else { kickbackGroup = _config.Default; hOffsetFactor = _config.Default.HPunchOffsetFactor; vOffsetFactor = _config.Default.VPunchOffsetFactor; Logger.DebugFormat("default offset {0}, {1}", hOffsetFactor, vOffsetFactor); } WeaponConfigNs.Kickback kickBackParams; if (playerWeapon.IsAir) { kickBackParams = kickbackGroup.Air; } else if (playerWeapon.HorizontalVeocity > _config.FastMoveSpeed) { kickBackParams = kickbackGroup.FastMove; } else if (playerWeapon.IsProne) { kickBackParams = kickbackGroup.Prone; } else if (playerWeapon.IsDuckOrProneState) { kickBackParams = kickbackGroup.Duck; } else { kickBackParams = kickbackGroup.Base; } BaseKickBack(playerWeapon, cmd.CmdSeq + bullet, kickBackParams.UpBase, kickBackParams.LateralBase, kickBackParams.UpModifier, kickBackParams.LateralModifier, kickBackParams.UpMax, kickBackParams.LateralMax, kickBackParams.LateralTurnback, hOffsetFactor, vOffsetFactor); }
public override void OnAfterFire(PlayerWeaponController controller, IWeaponCmd cmd) { var config = controller.HeldWeaponAgent.RifleKickbackLogicCfg; KickbackGroup kickbackGroup = null; var hOffsetFactor = 1f; var vOffsetFactor = 1f; if (controller.RelatedCameraSNew.IsAiming()) { kickbackGroup = config.Aiming; hOffsetFactor = config.Aiming.HPunchOffsetFactor; vOffsetFactor = config.Aiming.VPunchOffsetFactor; Logger.DebugFormat("animing offset {0}, {1}", hOffsetFactor, vOffsetFactor); } else { kickbackGroup = config.Default; hOffsetFactor = config.Default.HPunchOffsetFactor; vOffsetFactor = config.Default.VPunchOffsetFactor; Logger.DebugFormat("default offset {0}, {1}", hOffsetFactor, vOffsetFactor); } WeaponConfigNs.Kickback kickBackParams; var posture = controller.RelatedStateInterface.GetCurrentPostureState(); if (!controller.RelatedPlayerMove.IsGround) { kickBackParams = kickbackGroup.Air; } else if (controller.RelatedPlayerMove.HorizontalVelocity > config.FastMoveSpeed) { kickBackParams = kickbackGroup.FastMove; } else if (posture == XmlConfig.PostureInConfig.Prone) { kickBackParams = kickbackGroup.Prone; } else if (posture == XmlConfig.PostureInConfig.Crouch) { kickBackParams = kickbackGroup.Duck; } else { kickBackParams = kickbackGroup.Base; } BaseKickBack(controller, cmd.CmdSeq, kickBackParams, hOffsetFactor, vOffsetFactor); }