Advertisement
DanielSiqueira

Untitled

Sep 6th, 2020
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.47 KB | None | 0 0
  1. local sway_arms, stop_arm_sway do
  2.             local smoothdamp     = FX.smoothdamp
  3.             local arm_swayer     = FX.arm_swayer(char.HumanoidRootPart, humanoid)
  4.             local arm_swayer_update = arm_swayer.update
  5.             local left_shoulder  = fpv.view.HumanoidRootpart.LeftArm
  6.             local right_shoulder = fpv.view.HumanoidRootpart.RightArm
  7.            
  8.             local left_upper_arm = left_shoulder.Part0
  9.             local left_shoulder_c0 = left_shoulder.C0
  10.            
  11.             local right_upper_arm = right_shoulder.Part0
  12.             local right_shoulder_c0 = right_shoulder.C0
  13.            
  14.             local axg = firing and 0 or 1
  15.             local axv = 0
  16.             local ax  = axg
  17.            
  18.             local ayg = firing and 0 or 1
  19.             local ayv = 0
  20.             local ay  = ayg
  21.            
  22.             local type_config = type_data[config.type].config
  23.            
  24.             local ARM_SWAY_X_DEGREES = type_config.ARM_SWAY_X_DEGREES
  25.             local ARM_SWAY_Y_DEGREES = type_config.ARM_SWAY_Y_DEGREES
  26.             local LEFT_RIGHT_X_SWAY_RATIO = type_config.LEFT_RIGHT_X_SWAY_RATIO
  27.             local LEFT_RIGHT_Y_SWAY_RATIO = type_config.LEFT_RIGHT_Y_SWAY_RATIO
  28.             local RELOAD_SWAY_X_MULTIPLIER = type_config.RELOAD_SWAY_X_MULTIPLIER
  29.             local RELOAD_SWAY_Y_MULTIPLIER = type_config.RELOAD_SWAY_Y_MULTIPLIER
  30.            
  31.             local function update_arm_sway(time, delta)
  32.                 local dr = 1 - 0.9^(60*delta)
  33.                 axg = firing and 0 or reloading and RELOAD_SWAY_X_MULTIPLIER or 1
  34.                 ayg = firing and 0 or reloading and RELOAD_SWAY_Y_MULTIPLIER or 1
  35.                
  36.                 ax, axv = smoothdamp(ax, axg, axv, Config.ANIMATION_TRANSITION_SPEED, delta)
  37.                 ay, ayv = smoothdamp(ax, ayg, ayv, Config.ANIMATION_TRANSITION_SPEED, delta)
  38.                
  39.                 local x, y = arm_swayer_update(delta)
  40.                
  41.                 x, y = ay*x*ARM_SWAY_Y_DEGREES/180*PI, ax*y*ARM_SWAY_X_DEGREES/180*PI
  42.                
  43.                 local cam_cf = camera.CFrame
  44.                 local uv = cam_cf.UpVector
  45.                 local rv = cam_cf.RightVector
  46.                
  47.                 local left_joint_cf     =  left_upper_arm.CFrame * left_shoulder_c0
  48.                 local joint_space       = (left_joint_cf - left_joint_cf.Position):Inverse()
  49.                 local transform_left    =  FromAxisAngle(joint_space * uv, y*LEFT_RIGHT_X_SWAY_RATIO) * left_shoulder.Transform
  50.                 left_shoulder.Transform =  FromAxisAngle(joint_space * rv, x*LEFT_RIGHT_Y_SWAY_RATIO) * transform_left
  51.                
  52.                 local right_joint_cf     =  right_upper_arm.CFrame * right_shoulder_c0
  53.                 local joint_space        = (right_joint_cf - right_joint_cf.Position):Inverse()
  54.                 local transform_right    =  FromAxisAngle(joint_space * uv, y) * right_shoulder.Transform
  55.                 right_shoulder.Transform =  FromAxisAngle(joint_space * rv, x) * transform_right
  56.             end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement