Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local sway_arms, stop_arm_sway do
- local smoothdamp = FX.smoothdamp
- local arm_swayer = FX.arm_swayer(char.HumanoidRootPart, humanoid)
- local arm_swayer_update = arm_swayer.update
- local left_shoulder = fpv.view.HumanoidRootpart.LeftArm
- local right_shoulder = fpv.view.HumanoidRootpart.RightArm
- local left_upper_arm = left_shoulder.Part0
- local left_shoulder_c0 = left_shoulder.C0
- local right_upper_arm = right_shoulder.Part0
- local right_shoulder_c0 = right_shoulder.C0
- local axg = firing and 0 or 1
- local axv = 0
- local ax = axg
- local ayg = firing and 0 or 1
- local ayv = 0
- local ay = ayg
- local type_config = type_data[config.type].config
- local ARM_SWAY_X_DEGREES = type_config.ARM_SWAY_X_DEGREES
- local ARM_SWAY_Y_DEGREES = type_config.ARM_SWAY_Y_DEGREES
- local LEFT_RIGHT_X_SWAY_RATIO = type_config.LEFT_RIGHT_X_SWAY_RATIO
- local LEFT_RIGHT_Y_SWAY_RATIO = type_config.LEFT_RIGHT_Y_SWAY_RATIO
- local RELOAD_SWAY_X_MULTIPLIER = type_config.RELOAD_SWAY_X_MULTIPLIER
- local RELOAD_SWAY_Y_MULTIPLIER = type_config.RELOAD_SWAY_Y_MULTIPLIER
- local function update_arm_sway(time, delta)
- local dr = 1 - 0.9^(60*delta)
- axg = firing and 0 or reloading and RELOAD_SWAY_X_MULTIPLIER or 1
- ayg = firing and 0 or reloading and RELOAD_SWAY_Y_MULTIPLIER or 1
- ax, axv = smoothdamp(ax, axg, axv, Config.ANIMATION_TRANSITION_SPEED, delta)
- ay, ayv = smoothdamp(ax, ayg, ayv, Config.ANIMATION_TRANSITION_SPEED, delta)
- local x, y = arm_swayer_update(delta)
- x, y = ay*x*ARM_SWAY_Y_DEGREES/180*PI, ax*y*ARM_SWAY_X_DEGREES/180*PI
- local cam_cf = camera.CFrame
- local uv = cam_cf.UpVector
- local rv = cam_cf.RightVector
- local left_joint_cf = left_upper_arm.CFrame * left_shoulder_c0
- local joint_space = (left_joint_cf - left_joint_cf.Position):Inverse()
- local transform_left = FromAxisAngle(joint_space * uv, y*LEFT_RIGHT_X_SWAY_RATIO) * left_shoulder.Transform
- left_shoulder.Transform = FromAxisAngle(joint_space * rv, x*LEFT_RIGHT_Y_SWAY_RATIO) * transform_left
- local right_joint_cf = right_upper_arm.CFrame * right_shoulder_c0
- local joint_space = (right_joint_cf - right_joint_cf.Position):Inverse()
- local transform_right = FromAxisAngle(joint_space * uv, y) * right_shoulder.Transform
- right_shoulder.Transform = FromAxisAngle(joint_space * rv, x) * transform_right
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement