Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.06 KB | None | 0 0
  1. void __fastcall PlayerInput_FixedUpdate_Hook2(unsigned long long __rcx)
  2. {
  3.     PlayerInput *pPlayerInput = (PlayerInput*)(__rcx);
  4.  
  5.     static bool bGotCommandProcessors = false;
  6.  
  7.    
  8.     if (!pPlayerInput->m_bActive)
  9.         return;
  10.  
  11.     if (!bGotCommandProcessors)
  12.     {
  13.         g_pButtonA = original_InputButtonProcessor_GetButton(EButton::ButtonA);
  14.         g_pMenuSelect = original_InputButtonProcessor_GetCommand(ECommand::MenuSelect);
  15.         g_pJump = original_InputButtonProcessor_GetCommand(ECommand::Jump);//original_InputButtonProcessor_GetButton(EButton::ButtonA);
  16.         g_pDash = original_InputButtonProcessor_GetCommand(ECommand::Dash);//original_InputButtonProcessor_GetButton(EButton::LeftShoulder);
  17.         g_pAbility1 = original_InputButtonProcessor_GetCommand(ECommand::Ability1);//original_InputButtonProcessor_GetButton(EButton::ButtonX);
  18.         g_pAbility2 = original_InputButtonProcessor_GetCommand(ECommand::Ability2);//original_InputButtonProcessor_GetButton(EButton::ButtonY);
  19.         g_pAbility3 = original_InputButtonProcessor_GetCommand(ECommand::Ability3);//original_InputButtonProcessor_GetButton(EButton::ButtonB);
  20.        
  21.         bGotCommandProcessors = true;
  22.     }
  23.  
  24.     if (!pPlayerInput->m_bActive)
  25.         return;
  26.  
  27.     // we ain't playing back, kick cans kid
  28.     if (!g_pPlaybackManager->IsPlayingBack())
  29.         return original_PlayerInputFixedUpdate(__rcx);
  30.  
  31.     // do relative calc for this stupid pointer
  32.     // TODO: Bool check instead, and only do this once.
  33.     unsigned long long qwUnkB9 = (PlayerInput_FixedUpdate_VA + 0xB9);
  34.     unsigned long long rel = *(unsigned long*)(qwUnkB9 + 0x03);
  35.     unsigned long long physAddr = (qwUnkB9 + rel) + 0x07;
  36.  
  37.     unsigned long long qwUnk0027B = (PlayerInput_FixedUpdate_VA + 0x27B);
  38.     unsigned long long rel2 = *(unsigned long long*)(qwUnk0027B + 0x03);
  39.     unsigned long long ptr_PhysAddrCoreInput = (qwUnk0027B + rel2) + 0x07;
  40.  
  41.     unsigned long long b = (unsigned long)(ptr_PhysAddrCoreInput);
  42.     b = *(unsigned long long*)(b);
  43.     Core_Input * pCoreInput = (Core_Input*)(*(unsigned long long*)(b + 0xB8));
  44.  
  45.     // COME ON, MAN.
  46.     g_pCoreInput = pCoreInput;
  47.  
  48.  
  49.     unsigned long long a = (unsigned long)(physAddr);
  50.     a = *(unsigned long long*)(a);
  51.     unsigned long long rax = *(unsigned long long*)(a + 0xB8);
  52.     unsigned long long UI = *(unsigned long long*)(rax + 0x08);
  53.  
  54.     // RAX=UI.Cameras..
  55.     rax = *(unsigned long long*)(UI + 0x28);
  56.  
  57.     UnityEngine_Camera * CurrentCamera = (UnityEngine_Camera*)(*(unsigned long long*)(rax + 0x18));
  58.  
  59.     UnityEngine_Input * pUnityEngineInput = GetUnityEngine_Input();
  60.     Vector3 mousePos(pUnityEngineInput->m_fMouseX, pUnityEngineInput->m_fMouseY);
  61.  
  62.     // our out vector.
  63.     Vector3 viewportPoint;
  64.  
  65.     // rcx=classptr, rdx=from, r8=outVector
  66.     ScreenToViewportPoint_Injected(CurrentCamera, &mousePos, &viewportPoint);
  67.    
  68.     pCoreInput->CursorPosition.m_fX = viewportPoint.x;
  69.     pCoreInput->CursorPosition.m_fY = viewportPoint.y;
  70.  
  71.  
  72.     if (g_pPlaybackManager->IsPlayingBack())
  73.     {
  74.             // now this makes no sense, we need to give DoPlayback access to the InputButtonProcessors instead.
  75.         g_pPlaybackManager->DoPlayback(g_bPressedFrameStepThisFrame);
  76.         g_bPressedFrameStepThisFrame = false;
  77.     }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement