Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ControllerSettings.c
Go to the documentation of this file.
2{
3 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0.1 2 0.01", desc: "Mouse aim sensitivity")]
5
6 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0.1 2 0.01", desc: "Stick aim sensitivity")]
8
9 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0.1 1 0.01", desc: "Additional aim sensitivity multiplier for ADS")]
10 float m_fAimADS;
11
12 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 1 0.01", desc: "FOV input curve for mouse")]
14
15 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 1 0.01", desc: "FOV input curve for stick")]
17
18 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 1 0.01", desc: "FOV input curve for gyro")]
20
21 static void SetAimSensitivitySettings()
22 {
23 BaseContainer aimSensitivitySettings = GetGame().GetGameUserSettings().GetModule("SCR_AimSensitivitySettings");
24 if (aimSensitivitySettings)
25 {
26 float aimSensitivityMouse;
27 float aimSensitivityGamepad;
28 float aimMultipADS;
29
30 if (aimSensitivitySettings.Get("m_fMouseSensitivity", aimSensitivityMouse)
31 && aimSensitivitySettings.Get("m_fStickSensitivity", aimSensitivityGamepad)
32 && aimSensitivitySettings.Get("m_fAimADS", aimMultipADS))
33 {
34 CharacterControllerComponent.SetAimingSensitivity(aimSensitivityMouse, aimSensitivityGamepad, aimMultipADS);
35 SCR_CharacterCameraHandlerComponent.SetADSSensitivity(aimMultipADS);
36 }
37
38 // Input curve: 0 = constant, 1 = linear
39 float inputCurveMouse;
40 float inputCurveStick;
41 float inputCurveGyro;
42
43 if (aimSensitivitySettings.Get("m_fFOVInputCurveMouse", inputCurveMouse)
44 && aimSensitivitySettings.Get("m_fFOVInputCurveStick", inputCurveStick)
45 && aimSensitivitySettings.Get("m_fFOVInputCurveGyro", inputCurveGyro))
46 {
47 CharacterControllerComponent.SetFOVInputCurve(inputCurveMouse, inputCurveStick, inputCurveGyro, 0);
48 }
49 }
50 }
51}
52
53class SCR_HeadTrackingSettings : ModuleGameSettings
54{
55 [Attribute(defvalue: "1", uiwidget: UIWidgets.CheckBox, "Head tracking freelook")]
56 bool m_bHeadTrackingFreelook;
57
58 [Attribute(defvalue: "1", uiwidget: UIWidgets.CheckBox, "Head tracking while aiming down sights")]
60
61 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 30 0.1", desc: "Head tracking sensitivity")]
63
64 [Attribute(defvalue: "0.05", uiwidget: UIWidgets.Slider, params: "0 1 0.01", desc: "Head tracking deadzone while aiming down sights")]
66
67 [Attribute(defvalue: SCR_Enum.GetDefault(ETrackIRLeanMode.ROLL), uiwidget: UIWidgets.ComboBox, desc: "Head tracking lean", enumType: ETrackIRLeanMode)]
69
70 [Attribute(defvalue: "15", uiwidget: UIWidgets.Slider, params: "0 30 0.1", desc: "Head tracking lean sensitivity")]
72
73 [Attribute(defvalue: "0.2", uiwidget: UIWidgets.Slider, params: "0 1 0.01", desc: "Head tracking lean deadzone")]
75
76 [Attribute(defvalue: "20", uiwidget: UIWidgets.Slider, params: "0 90 1", desc: "Head tracking lean yaw limit")]
78
79 //------------------------------------------------------------------------------------------------
80 static void SetHeadTrackingSettings()
81 {
82 BaseContainer headTrackingSettings = GetGame().GetGameUserSettings().GetModule("SCR_HeadTrackingSettings");
83 if (headTrackingSettings)
84 {
85 bool headTrackingFreelook;
86 bool headTrackingADS;
87 ETrackIRLeanMode headTrackingLean;
88
89 if (headTrackingSettings.Get("m_bHeadTrackingFreelook", headTrackingFreelook)
90 && headTrackingSettings.Get("m_bHeadTrackingADS", headTrackingADS)
91 && headTrackingSettings.Get("m_eHeadTrackingLean", headTrackingLean))
92 {
93 CharacterControllerComponent.SetTrackIREnable(headTrackingFreelook || headTrackingADS || headTrackingLean != ETrackIRLeanMode.DISABLED);
94 CharacterControllerComponent.SetTrackIRFreelookEnable(headTrackingFreelook);
95 CharacterControllerComponent.SetTrackIRWhileADSEnable(headTrackingADS);
96 CharacterControllerComponent.SetTrackIRLeaningEnable(headTrackingLean != ETrackIRLeanMode.DISABLED);
97 CharacterControllerComponent.SetTrackIRLeaningMode(headTrackingLean);
98 }
99
100 float headTrackingSensitivity;
101 float headTrackingADSDeadzone;
102
103 if (headTrackingSettings.Get("m_fHeadTrackingSensitivity", headTrackingSensitivity)
104 && headTrackingSettings.Get("m_fHeadTrackingADSDeadzone", headTrackingADSDeadzone))
105 {
106 CharacterControllerComponent.SetTrackIRFreelookSensitivity(headTrackingSensitivity);
107 CharacterControllerComponent.SetTrackIRFreelookDeadzoneADS(headTrackingADSDeadzone);
108 }
109
110 float headTrackingLeanSensitivity;
111 float headTrackingLeanDeadzone;
112 float headTrackingLeanYawLimit;
113
114 if (headTrackingSettings.Get("m_fHeadTrackingLeanSensitivity", headTrackingLeanSensitivity)
115 && headTrackingSettings.Get("m_fHeadTrackingLeanDeadzone", headTrackingLeanDeadzone)
116 && headTrackingSettings.Get("m_fHeadTrackingLeanYawLimit", headTrackingLeanYawLimit))
117 {
118 CharacterControllerComponent.SetTrackIRMoveLeaningSensitivity(headTrackingLeanSensitivity);
119 CharacterControllerComponent.SetTrackIRRollLeaningSensitivity(headTrackingLeanSensitivity);
120 CharacterControllerComponent.SetTrackIRLeaningDeadzone(headTrackingLeanDeadzone);
121 CharacterControllerComponent.SetTrackIRLeaningActiveYawRange(headTrackingLeanYawLimit);
122 }
123 }
124 }
125}
126
128{
129 [Attribute(defvalue: "0", uiwidget: UIWidgets.CheckBox, "Enable gyro always")]
130 bool m_bGyroAlways;
131
132 [Attribute(defvalue: "1", uiwidget: UIWidgets.CheckBox, "Enable gyro while freelooking")]
133 bool m_bGyroFreelook;
134
135 [Attribute(defvalue: "1", uiwidget: UIWidgets.CheckBox, "Enable gyro while aiming down sights")]
136 bool m_bGyroADS;
137
138 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 20 0.1", desc: "Gyro sensitivity")]
139 float m_fGyroSensitivity;
140
141 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 2 0.01", desc: "Gyro vertical horizontal ratio")]
142 float m_fGyroVerticalHorizontalRatio;
143
144 [Attribute(defvalue: "1", uiwidget: UIWidgets.Slider, params: "0 2 0.01", desc: "Rumble multiplier")]
145 float m_fRumbleIntensity;
146
147 [Attribute(defvalue: SCR_Enum.GetDefault(SCR_EGyroAxisDirection.ENABLED), uiwidget: UIWidgets.ComboBox, desc: "Gyro yaw direction", enumType: SCR_EGyroAxisDirection)]
148 SCR_EGyroAxisDirection m_eGyroDirectionYaw;
149
150 [Attribute(defvalue: SCR_Enum.GetDefault(SCR_EGyroAxisDirection.ENABLED), uiwidget: UIWidgets.ComboBox, desc: "Gyro pitch direction", enumType: SCR_EGyroAxisDirection)]
151 SCR_EGyroAxisDirection m_eGyroDirectionPitch;
152
153 [Attribute(defvalue: SCR_Enum.GetDefault(SCR_EGyroAxisDirection.DISABLED), uiwidget: UIWidgets.ComboBox, desc: "Gyro roll direction", enumType: SCR_EGyroAxisDirection)]
154 SCR_EGyroAxisDirection m_eGyroDirectionRoll;
155
156 //------------------------------------------------------------------------------------------------
157 static void SetControllerSettings()
158 {
159 BaseContainer controllerSettings = GetGame().GetGameUserSettings().GetModule("SCR_ControllerSettings");
160 if (controllerSettings)
161 {
162 bool gyroAlways;
163 bool gyroFreelook;
164 bool gyroADS;
165
166 if (controllerSettings.Get("m_bGyroAlways", gyroAlways)
167 && controllerSettings.Get("m_bGyroFreelook", gyroFreelook)
168 && controllerSettings.Get("m_bGyroADS", gyroADS))
169 {
170 CharacterControllerComponent.SetGyroControl(gyroAlways, gyroFreelook, gyroADS);
171 }
172
173 float gyroSensitivity;
174 float gyroVerticalHorizontalRatio;
175
176 SCR_EGyroAxisDirection gyroDirectionYaw;
177 SCR_EGyroAxisDirection gyroDirectionPitch;
178 SCR_EGyroAxisDirection gyroDirectionRoll;
179
180 if (controllerSettings.Get("m_fGyroSensitivity", gyroSensitivity)
181 && controllerSettings.Get("m_fGyroVerticalHorizontalRatio", gyroVerticalHorizontalRatio)
182 && controllerSettings.Get("m_eGyroDirectionYaw", gyroDirectionYaw)
183 && controllerSettings.Get("m_eGyroDirectionPitch", gyroDirectionPitch)
184 && controllerSettings.Get("m_eGyroDirectionRoll", gyroDirectionRoll))
185 {
186 float sensitivityYaw;
187 switch (gyroDirectionYaw)
188 {
189 case SCR_EGyroAxisDirection.ENABLED: sensitivityYaw = gyroSensitivity; break;
190 case SCR_EGyroAxisDirection.INVERTED: sensitivityYaw = -gyroSensitivity; break;
191 }
192
193 float sensitivityPitch;
194 switch (gyroDirectionPitch)
195 {
196 case SCR_EGyroAxisDirection.ENABLED: sensitivityPitch = gyroSensitivity; break;
197 case SCR_EGyroAxisDirection.INVERTED: sensitivityPitch = -gyroSensitivity; break;
198 }
199
200 float sensitivityRoll;
201 switch (gyroDirectionRoll)
202 {
203 case SCR_EGyroAxisDirection.ENABLED: sensitivityRoll = gyroSensitivity; break;
204 case SCR_EGyroAxisDirection.INVERTED: sensitivityRoll = -gyroSensitivity; break;
205 }
206
207 if (gyroVerticalHorizontalRatio > 1)
208 {
209 // Slider over 50%: reduce horizontal
210 float horizontalRatio = Math.Max(2 - gyroVerticalHorizontalRatio, 0);
211 sensitivityYaw *= horizontalRatio;
212 sensitivityRoll *= horizontalRatio;
213 }
214 else
215 {
216 // Slider below 50%: reduce vertical
217 float verticalRatio = Math.Max(gyroVerticalHorizontalRatio, 0);
218 sensitivityPitch *= verticalRatio;
219 }
220
221 CharacterControllerComponent.SetGyroSensitivity(sensitivityYaw, sensitivityPitch, sensitivityRoll);
222 }
223
224 float rumbleIntensity;
225 if (controllerSettings.Get("m_fRumbleIntensity", rumbleIntensity))
226 {
227 GamepadRumbleEffect.SetRumbleIntensity(rumbleIntensity);
228 }
229 }
230 }
231}
ETrackIRLeanMode
ArmaReforgerScripted GetGame()
Definition game.c:1398
ETrackIRLeanMode m_eHeadTrackingLean
float m_fAimADS
float m_fHeadTrackingLeanSensitivity
float m_fStickSensitivity
float m_fFOVInputCurveMouse
float m_fHeadTrackingSensitivity
bool m_bHeadTrackingADS
float m_fMouseSensitivity
float m_fHeadTrackingLeanDeadzone
float m_fFOVInputCurveGyro
float m_fFOVInputCurveStick
float m_fHeadTrackingADSDeadzone
float m_fHeadTrackingLeanYawLimit
SCR_EGyroAxisDirection
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Effect used to rumble the gamepad.
Definition Math.c:13
By inheriting of this class you define a settings module.
SCR_FieldOfViewSettings Attribute