Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_RecoilForceAimModifier.c
Go to the documentation of this file.
1
#define SCRIPTED_AIM_MODIFIER_DEBUG
2
class
SCR_RecoilForceAimModifier
:
ScriptedWeaponAimModifier
3
{
4
[
Attribute
(
desc
:
"How much rotational force should be applied"
,
params
:
"0 inf"
)]
5
protected
vector
m_vRotationOffset
;
6
7
[
Attribute
(
desc
:
"If game should check the ground under the gun to determine how much recoil should be applied"
)]
8
protected
bool
m_bCheckRestingSurfaceDensity
;
9
10
protected
float
m_fRemainingTime
;
11
protected
AimingComponent
m_AimingComp
;
12
protected
int
m_iSeed
;
13
14
//------------------------------------------------------------------------------------------------
15
override
void
OnInit
(
IEntity
weaponEnt)
16
{
17
if
(
m_vRotationOffset
==
vector
.Zero)
18
return
;
19
20
m_AimingComp
=
AimingComponent
.Cast(weaponEnt.
FindComponent
(
AimingComponent
));
21
SCR_MuzzleEffectComponent
muzzleEffectComp =
SCR_MuzzleEffectComponent
.Cast(weaponEnt.
FindComponent
(
SCR_MuzzleEffectComponent
));
22
if
(muzzleEffectComp)
23
muzzleEffectComp.
GetOnWeaponFired
().Insert(
OnProjectileFired
);
24
}
25
26
//------------------------------------------------------------------------------------------------
31
void
OnProjectileFired
(
IEntity
effectEntity,
BaseMuzzleComponent
muzzle,
IEntity
projectileEntity)
32
{
33
RplComponent projectileRpl = RplComponent.Cast(projectileEntity.
FindComponent
(RplComponent));
34
if
(!projectileRpl)
35
return
;
36
37
//needed to have the same seed for all clients to adjust the weapon in a same way
38
m_iSeed
= projectileRpl.Id().ToString().ToInt();
39
}
40
41
//------------------------------------------------------------------------------------------------
42
protected
override
void
OnWeaponFired
()
43
{
44
if
(
m_vRotationOffset
==
vector
.Zero)
45
return
;
46
47
IEntity
owner =
m_AimingComp
.GetOwner();
48
if
(!owner)
49
return
;
50
51
vector
newRotation =
m_AimingComp
.GetAimingRotation();
52
float
surfaceDensityMultiplier = 1;
53
if
(
m_bCheckRestingSurfaceDensity
)
54
{
55
TraceParam
paramGround =
new
TraceParam
();
56
paramGround.Start = owner.
GetOrigin
() + (
vector
.Up * 0.1);
57
paramGround.End = paramGround.Start -
vector
.Up;
58
paramGround.Flags =
TraceFlags
.WORLD |
TraceFlags
.ENTS;
59
paramGround.Exclude = owner;
60
paramGround.LayerMask =
EPhysicsLayerPresets
.Projectile;
61
owner.
GetWorld
().TraceMove(paramGround,
FilterCallback
);
62
GameMaterial
material = paramGround.SurfaceProps;
63
BallisticInfo
ballisticInfo;
64
if
(material)
65
ballisticInfo = material.GetBallisticInfo();
66
67
if
(ballisticInfo)
68
surfaceDensityMultiplier =
Math
.AbsFloat(ballisticInfo.GetDensity() - 1) * 0.2 + 1;
69
}
70
71
RandomGenerator
randomValueGenerator =
new
RandomGenerator
();
72
randomValueGenerator.SetSeed(
m_iSeed
);
73
if
(!
float
.AlmostEqual(
m_vRotationOffset
[0], 0))
74
newRotation[0] = newRotation[0] + (randomValueGenerator.RandFloatXY(-
m_vRotationOffset
[0],
m_vRotationOffset
[0]) * surfaceDensityMultiplier);
75
76
if
(!
float
.AlmostEqual(
m_vRotationOffset
[1], 0))
77
newRotation[1] = newRotation[1] + (randomValueGenerator.RandFloatXY(-
m_vRotationOffset
[1],
m_vRotationOffset
[1]) * surfaceDensityMultiplier);
78
79
if
(!
float
.AlmostEqual(
m_vRotationOffset
[2], 0))
80
newRotation[2] = newRotation[2] + (randomValueGenerator.RandFloatXY(-
m_vRotationOffset
[2],
m_vRotationOffset
[2]) * surfaceDensityMultiplier);
81
82
newRotation *=
Math
.DEG2RAD;
83
m_AimingComp
.SetAimingRotation(newRotation);
84
}
85
86
//------------------------------------------------------------------------------------------------
87
protected
bool
FilterCallback
(
IEntity
e)
88
{
89
if
(
ChimeraCharacter
.Cast(e))
90
return
false
;
91
92
return
true
;
93
}
94
}
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
AimingComponent
Definition
AimingComponent.c:13
BallisticInfo
Definition
BallisticInfo.c:13
BaseMuzzleComponent
Definition
BaseMuzzleComponent.c:13
ChimeraCharacter
Definition
ChimeraCharacter.c:13
GameMaterial
Definition
GameMaterial.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetOrigin
proto external vector GetOrigin()
IEntity::GetWorld
proto external BaseWorld GetWorld()
Math
Definition
Math.c:13
RandomGenerator
Definition
RandomGenerator.c:13
SCR_MuzzleEffectComponent
Definition
SCR_MuzzleEffectComponent.c:10
SCR_MuzzleEffectComponent::GetOnWeaponFired
OnItemWeaponFiredInvoker GetOnWeaponFired()
Definition
SCR_MuzzleEffectComponent.c:13
SCR_RecoilForceAimModifier
Definition
SCR_RecoilForceAimModifier.c:3
SCR_RecoilForceAimModifier::m_iSeed
int m_iSeed
Definition
SCR_RecoilForceAimModifier.c:12
SCR_RecoilForceAimModifier::FilterCallback
bool FilterCallback(IEntity e)
Definition
SCR_RecoilForceAimModifier.c:87
SCR_RecoilForceAimModifier::m_vRotationOffset
vector m_vRotationOffset
Definition
SCR_RecoilForceAimModifier.c:5
SCR_RecoilForceAimModifier::OnWeaponFired
override void OnWeaponFired()
Definition
SCR_RecoilForceAimModifier.c:42
SCR_RecoilForceAimModifier::m_AimingComp
AimingComponent m_AimingComp
Definition
SCR_RecoilForceAimModifier.c:11
SCR_RecoilForceAimModifier::m_fRemainingTime
float m_fRemainingTime
Definition
SCR_RecoilForceAimModifier.c:10
SCR_RecoilForceAimModifier::OnProjectileFired
void OnProjectileFired(IEntity effectEntity, BaseMuzzleComponent muzzle, IEntity projectileEntity)
Definition
SCR_RecoilForceAimModifier.c:31
SCR_RecoilForceAimModifier::OnInit
override void OnInit(IEntity weaponEnt)
Definition
SCR_RecoilForceAimModifier.c:15
SCR_RecoilForceAimModifier::m_bCheckRestingSurfaceDensity
bool m_bCheckRestingSurfaceDensity
Definition
SCR_RecoilForceAimModifier.c:8
ScriptedWeaponAimModifier
Definition
ScriptedWeaponAimModifier.c:13
TraceParam
Definition
TraceParam.c:16
vector
Definition
vector.c:13
EPhysicsLayerPresets
EPhysicsLayerPresets
Enum is filled by C++ by data in project config PhysicsSettings.LayerPresets.
Definition
gameLib.c:19
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
TraceFlags
TraceFlags
Definition
TraceFlags.c:13
scripts
GameCode
Weapon
SCR_RecoilForceAimModifier.c
Generated by
1.17.0