Add RotateCameraWorker
- Added ModMenuModule::RotateCameraWorker - Updated ModMenuModule::MouseControlWorkerRegistry to use RotateCameraWorker when the player is driving a car
This commit is contained in:
parent
9a415660b5
commit
f09d2820c8
@ -654,6 +654,7 @@ echo Created $(ProjectDir)src\git.h with commit %GIT_HASH% (dirty=%GIT_DIRTY%)
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\point-at-mouse-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\locked-mouse-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\attack-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\rotate-camera-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\native-cheats-keeper.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\player-appearance.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\player-pos.h" />
|
||||
@ -902,6 +903,7 @@ echo Created $(ProjectDir)src\git.h with commit %GIT_HASH% (dirty=%GIT_DIRTY%)
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\mouse-control.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\point-at-mouse-worker.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\locked-mouse-worker.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\rotate-camera-worker.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\native-cheats-keeper.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\player-appearance.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\player-pos.cpp" />
|
||||
|
||||
@ -177,6 +177,7 @@
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\attack-worker.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\left-right-worker.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\mouse-control-worker-registry.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\mouse-control\rotate-camera-worker.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\converters\ammo.h" />
|
||||
@ -471,6 +472,7 @@
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\attack-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\left-right-worker.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\mouse-control-worker-registry.h" />
|
||||
<ClInclude Include="src\modules\modmenu\cheats\mouse-control\rotate-camera-worker.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GTA2.props" />
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
#include "mouse-control-worker-registry.h"
|
||||
#include "mouse-control-worker.h"
|
||||
#include "attack-worker.h"
|
||||
#include "locked-mouse-worker.h"
|
||||
#include "point-at-mouse-worker.h"
|
||||
#include "left-right-worker.h"
|
||||
#include "mouse-control-worker-registry.h"
|
||||
#include "rotate-camera-worker.h"
|
||||
|
||||
namespace ModMenuModule::MouseControlWorkerRegistry {
|
||||
namespace {
|
||||
@ -22,6 +23,7 @@ namespace ModMenuModule::MouseControlWorkerRegistry {
|
||||
{ GetWorkerType<LockedMouseWorker>(), &CreateWorkerInstance<LockedMouseWorker> },
|
||||
{ GetWorkerType<PointAtMouseWorker>(), &CreateWorkerInstance<PointAtMouseWorker> },
|
||||
{ GetWorkerType<LeftRightWorker>(), &CreateWorkerInstance<LeftRightWorker> },
|
||||
{ GetWorkerType<RotateCameraWorker>(), &CreateWorkerInstance<RotateCameraWorker> },
|
||||
};
|
||||
|
||||
return factories;
|
||||
@ -31,7 +33,7 @@ namespace ModMenuModule::MouseControlWorkerRegistry {
|
||||
{
|
||||
static const std::unordered_map<WorkerSetType, MouseControlWorkerSetDef> workerSetDefs = {
|
||||
{ WorkerSetType::RotateMode, MouseControlWorkerSetDef::Create<AttackWorker, LockedMouseWorker, LeftRightWorker>() },
|
||||
{ WorkerSetType::RotateModeInCar, MouseControlWorkerSetDef::Create<AttackWorker, void, void>() },
|
||||
{ WorkerSetType::RotateModeInCar, MouseControlWorkerSetDef::Create<AttackWorker, LockedMouseWorker, RotateCameraWorker>() },
|
||||
{ WorkerSetType::PointAtMode, MouseControlWorkerSetDef::Create<AttackWorker, PointAtMouseWorker, LeftRightWorker>() },
|
||||
{ WorkerSetType::PointAtModeInCar, MouseControlWorkerSetDef::Create<AttackWorker, void, void>() },
|
||||
};
|
||||
|
||||
@ -0,0 +1,74 @@
|
||||
#include "rotate-camera-worker.h"
|
||||
#include "mouse-control.h"
|
||||
#include "../camera/camera.h"
|
||||
#include "../../common.h"
|
||||
#include "../../utils/angle-utils.h"
|
||||
|
||||
static constexpr float ROTATE_CAMERA_SENSITIVITY = 0.75f;
|
||||
|
||||
void ModMenuModule::RotateCameraWorker::Start()
|
||||
{
|
||||
spdlog::debug("RotateCameraWorker: Starting");
|
||||
|
||||
SaveInitialCameraOffset();
|
||||
|
||||
MouseControlCheat* mouseControlCheat = MouseControlCheat::GetInstance();
|
||||
mouseControlCheat->SetDeltaX(0.0f);
|
||||
m_running = true;
|
||||
}
|
||||
|
||||
void ModMenuModule::RotateCameraWorker::Stop()
|
||||
{
|
||||
spdlog::debug("RotateCameraWorker: Stopping");
|
||||
|
||||
RestoreInitialCameraOffset();
|
||||
|
||||
m_running = false;
|
||||
}
|
||||
|
||||
void ModMenuModule::RotateCameraWorker::Update()
|
||||
{
|
||||
MouseControlCheat* mouseControlCheat = MouseControlCheat::GetInstance();
|
||||
CameraCheat* cameraCheat = CameraCheat::GetInstance();
|
||||
|
||||
float deltaX = mouseControlCheat->GetDeltaX();
|
||||
if (deltaX == 0.0f) return;
|
||||
mouseControlCheat->SetDeltaX(0.0f);
|
||||
|
||||
if (!cameraCheat->IsEnabled()) return;
|
||||
|
||||
CameraCheatOptions cameraOptions = cameraCheat->GetOptions();
|
||||
if (!cameraOptions.followPedRotation) return;
|
||||
|
||||
float newOffset = cameraOptions.followPedRotationOffset - deltaX * ROTATE_CAMERA_SENSITIVITY;
|
||||
cameraOptions.followPedRotationOffset = Utils::Angle::NormalizeAngle(newOffset);
|
||||
|
||||
cameraCheat->SetOptions(cameraOptions);
|
||||
}
|
||||
|
||||
void ModMenuModule::RotateCameraWorker::SaveInitialCameraOffset()
|
||||
{
|
||||
MouseControlCheat* mouseControlCheat = MouseControlCheat::GetInstance();
|
||||
CameraCheat* cameraCheat = CameraCheat::GetInstance();
|
||||
|
||||
if (!cameraCheat->IsEnabled()) return;
|
||||
|
||||
CameraCheatOptions cameraOptions = cameraCheat->GetOptions();
|
||||
if (!cameraOptions.followPedRotation) return;
|
||||
|
||||
m_initialCameraOffset = cameraOptions.followPedRotationOffset;
|
||||
}
|
||||
|
||||
void ModMenuModule::RotateCameraWorker::RestoreInitialCameraOffset() const
|
||||
{
|
||||
MouseControlCheat* mouseControlCheat = MouseControlCheat::GetInstance();
|
||||
CameraCheat* cameraCheat = CameraCheat::GetInstance();
|
||||
|
||||
if (!cameraCheat->IsEnabled()) return;
|
||||
|
||||
CameraCheatOptions cameraOptions = cameraCheat->GetOptions();
|
||||
if (!cameraOptions.followPedRotation) return;
|
||||
|
||||
cameraOptions.followPedRotationOffset = m_initialCameraOffset;
|
||||
cameraCheat->SetOptions(cameraOptions);
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
#include "mouse-control-worker.h"
|
||||
#include "../force-controls.h"
|
||||
|
||||
namespace ModMenuModule {
|
||||
class RotateCameraWorker : public MouseControlWorker {
|
||||
public:
|
||||
RotateCameraWorker() = default;
|
||||
RotateCameraWorker(const RotateCameraWorker&) = delete;
|
||||
RotateCameraWorker& operator=(const RotateCameraWorker&) = delete;
|
||||
|
||||
void Start() override;
|
||||
void Stop() override;
|
||||
bool IsRunning() const override { return m_running; }
|
||||
void Update() override;
|
||||
|
||||
void SaveInitialCameraOffset();
|
||||
void RestoreInitialCameraOffset() const;
|
||||
|
||||
private:
|
||||
bool m_running = false;
|
||||
float m_initialCameraOffset = 0.0f;
|
||||
};
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user