Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __fastcall PlayerInput_FixedUpdate_Hook2(unsigned long long __rcx)
- {
- PlayerInput *pPlayerInput = (PlayerInput*)(__rcx);
- static bool bGotCommandProcessors = false;
- if (!pPlayerInput->m_bActive)
- return;
- if (!bGotCommandProcessors)
- {
- g_pButtonA = original_InputButtonProcessor_GetButton(EButton::ButtonA);
- g_pMenuSelect = original_InputButtonProcessor_GetCommand(ECommand::MenuSelect);
- g_pJump = original_InputButtonProcessor_GetCommand(ECommand::Jump);//original_InputButtonProcessor_GetButton(EButton::ButtonA);
- g_pDash = original_InputButtonProcessor_GetCommand(ECommand::Dash);//original_InputButtonProcessor_GetButton(EButton::LeftShoulder);
- g_pAbility1 = original_InputButtonProcessor_GetCommand(ECommand::Ability1);//original_InputButtonProcessor_GetButton(EButton::ButtonX);
- g_pAbility2 = original_InputButtonProcessor_GetCommand(ECommand::Ability2);//original_InputButtonProcessor_GetButton(EButton::ButtonY);
- g_pAbility3 = original_InputButtonProcessor_GetCommand(ECommand::Ability3);//original_InputButtonProcessor_GetButton(EButton::ButtonB);
- bGotCommandProcessors = true;
- }
- if (!pPlayerInput->m_bActive)
- return;
- // we ain't playing back, kick cans kid
- if (!g_pPlaybackManager->IsPlayingBack())
- return original_PlayerInputFixedUpdate(__rcx);
- // do relative calc for this stupid pointer
- // TODO: Bool check instead, and only do this once.
- unsigned long long qwUnkB9 = (PlayerInput_FixedUpdate_VA + 0xB9);
- unsigned long long rel = *(unsigned long*)(qwUnkB9 + 0x03);
- unsigned long long physAddr = (qwUnkB9 + rel) + 0x07;
- unsigned long long qwUnk0027B = (PlayerInput_FixedUpdate_VA + 0x27B);
- unsigned long long rel2 = *(unsigned long long*)(qwUnk0027B + 0x03);
- unsigned long long ptr_PhysAddrCoreInput = (qwUnk0027B + rel2) + 0x07;
- unsigned long long b = (unsigned long)(ptr_PhysAddrCoreInput);
- b = *(unsigned long long*)(b);
- Core_Input * pCoreInput = (Core_Input*)(*(unsigned long long*)(b + 0xB8));
- // COME ON, MAN.
- g_pCoreInput = pCoreInput;
- unsigned long long a = (unsigned long)(physAddr);
- a = *(unsigned long long*)(a);
- unsigned long long rax = *(unsigned long long*)(a + 0xB8);
- unsigned long long UI = *(unsigned long long*)(rax + 0x08);
- // RAX=UI.Cameras..
- rax = *(unsigned long long*)(UI + 0x28);
- UnityEngine_Camera * CurrentCamera = (UnityEngine_Camera*)(*(unsigned long long*)(rax + 0x18));
- UnityEngine_Input * pUnityEngineInput = GetUnityEngine_Input();
- Vector3 mousePos(pUnityEngineInput->m_fMouseX, pUnityEngineInput->m_fMouseY);
- // our out vector.
- Vector3 viewportPoint;
- // rcx=classptr, rdx=from, r8=outVector
- ScreenToViewportPoint_Injected(CurrentCamera, &mousePos, &viewportPoint);
- pCoreInput->CursorPosition.m_fX = viewportPoint.x;
- pCoreInput->CursorPosition.m_fY = viewportPoint.y;
- if (g_pPlaybackManager->IsPlayingBack())
- {
- // now this makes no sense, we need to give DoPlayback access to the InputButtonProcessors instead.
- g_pPlaybackManager->DoPlayback(g_bPressedFrameStepThisFrame);
- g_bPressedFrameStepThisFrame = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement