Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions src/xrGame/EffectorZoomInertion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,14 @@ void CEffectorZoomInertion::SetParams(float disp)
{
float old_disp = m_fDispRadius;

m_fDispRadius = disp * m_fZoomAimingDispK;
if (m_fDispRadius < m_fDispMin)
m_fDispRadius = m_fDispMin;

m_fFloatSpeed = disp * m_fZoomAimingSpeedK;
if (m_fFloatSpeed < m_fSpeedMin)
m_fFloatSpeed = m_fSpeedMin;
// Boeker: adjust zoom inertia factor
m_fDispRadius = disp * m_fZoomAimingDispK * m_fUserFactor;
if (m_fDispRadius < m_fDispMin * m_fUserFactor)
m_fDispRadius = m_fDispMin * m_fUserFactor;

m_fFloatSpeed = disp * m_fZoomAimingSpeedK * m_fUserFactor;
if (m_fFloatSpeed < m_fSpeedMin * m_fUserFactor)
m_fFloatSpeed = m_fSpeedMin * m_fUserFactor;

//для того, чтоб сразу прошел пересчет направления
//движения прицела
Expand Down
7 changes: 7 additions & 0 deletions src/xrGame/EffectorZoomInertion.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ class CEffectorZoomInertion : public CEffectorCam
float m_fSpeedMin;
float m_fZoomAimingDispK;
float m_fZoomAimingSpeedK;

// Boeker: Lua-controlled zoom inertia factor
float m_fUserFactor = 1.0f;

//время через которое эффектор меняет направление движения
u32 m_dwDeltaTime;

Expand All @@ -40,6 +44,9 @@ class CEffectorZoomInertion : public CEffectorCam
void Load();
void SetParams(float disp);

void SetUserFactor(float factor) { m_fUserFactor = factor; }
float GetUserFactor() const { return m_fUserFactor; }

virtual BOOL ProcessCam(SCamEffectorInfo& info);
virtual void SetRndSeed(s32 Seed) { m_Random.seed(Seed); };
virtual void Init(CWeaponMagazined* pWeapon);
Expand Down
3 changes: 3 additions & 0 deletions src/xrGame/script_game_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -1201,6 +1201,9 @@ class CScriptGameObject
float GetActorDamageStaggerTimeFactor() const;
void SetActorDamageStaggerTimeFactor(float val);

// Boeker: adjust zoom inertia factor
void SetZoomInertionFactor(float factor);

float GetActorCrouchCoef() const;
void SetActorCrouchCoef(float val);
float GetActorClimbCoef() const;
Expand Down
20 changes: 20 additions & 0 deletions src/xrGame/script_game_object_inventory_owner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
#include "ai_space.h"
#include "ActorBackpack.h"

// Boeker: zoom inertia factor support
#include "EffectorZoomInertion.h"
#include "ActorEffector.h"

//
//-Alundaio

Expand Down Expand Up @@ -2867,6 +2871,22 @@ void CScriptGameObject::SetActorDamageStaggerTimeFactor(float val)
pActor->DamageStaggerTimeFactor = val;
}

// Boeker: zoom inertia factor support
void CScriptGameObject::SetZoomInertionFactor(float factor)
{
CActor* pActor = smart_cast<CActor*>(&object());
if (!pActor)
return;

CEffectorZoomInertion* eff = smart_cast<CEffectorZoomInertion*>(
pActor->Cameras().GetCamEffector(eCEZoom)
);
if (!eff)
return;

eff->SetUserFactor(clampr(factor, 0.f, 2.f));
}

// demonized: Additional exports
float CScriptGameObject::GetActorCrouchCoef() const
{
Expand Down
3 changes: 3 additions & 0 deletions src/xrGame/script_game_object_script3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,9 @@ class_<CScriptGameObject> script_register_game_object2(class_<CScriptGameObject>
.def("get_actor_lookout_coef", SAFE_WRAP(&CScriptGameObject::GetActorLookoutCoef))
.def("set_actor_lookout_coef", SAFE_WRAP(&CScriptGameObject::SetActorLookoutCoef))

// Boeker: adjust zoom inertia factor
.def("set_zoom_inertion_factor", SAFE_WRAP(&CScriptGameObject::SetZoomInertionFactor))

// verdatim: Adjust damager stagger time factor
.def("get_actor_damage_stagger_time_factor", SAFE_WRAP(&CScriptGameObject::GetActorDamageStaggerTimeFactor))
.def("set_actor_damage_stagger_time_factor", SAFE_WRAP(&CScriptGameObject::SetActorDamageStaggerTimeFactor))
Expand Down