MCPcopy Create free account
hub / github.com/Panzerschrek/Chasm-Reverse / ControllerRotate

Method ControllerRotate

PanzerChasm/client/movement_controller.cpp:260–297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258}
259
260void MovementController::ControllerRotate( const int delta_x, const int delta_z )
261{
262 float base_sensetivity= settings_.GetOrSetFloat( SettingsKeys::mouse_sensetivity, 0.5f );
263 base_sensetivity= std::max( 0.0f, std::min( base_sensetivity, 1.0f ) );
264 settings_.SetSetting( SettingsKeys::mouse_sensetivity, base_sensetivity );
265
266 float d_x_f, d_z_f;
267 if( settings_.GetOrSetBool( "cl_mouse_filter", true ) )
268 {
269 d_x_f= float( delta_x + prev_controller_delta_x_ ) * 0.5f;
270 d_z_f= float( delta_z + prev_controller_delta_z_ ) * 0.5f;
271 }
272 else
273 {
274 d_x_f= float(delta_x);
275 d_z_f= float(delta_z);
276 }
277
278 if( settings_.GetOrSetBool( "cl_mouse_acceleration", true ) )
279 {
280 const float c_acceleration= 0.25f;
281 const float c_max_acceleration_factor= 2.0f;
282 d_x_f= std::min( c_acceleration * std::sqrt(std::abs(d_x_f)), c_max_acceleration_factor ) * d_x_f;
283 d_z_f= std::min( c_acceleration * std::sqrt(std::abs(d_z_f)), c_max_acceleration_factor ) * d_z_f;
284 }
285
286 const float c_max_exp_sensetivity= 8.0f;
287 const float exp_sensetivity= std::exp( base_sensetivity * std::log(c_max_exp_sensetivity) ); // [ 1; c_max_exp_sensetivity ]
288
289 const float c_pix_scale= 1.0f / 1024.0f;
290 const float z_direction= settings_.GetOrSetBool( SettingsKeys::reverse_mouse ) ? -1.0f : +1.0f;
291
292 angle_.x-= exp_sensetivity * c_pix_scale * d_x_f * z_direction;
293 angle_.z-= exp_sensetivity * c_pix_scale * d_z_f * 0.5f;
294
295 prev_controller_delta_x_= delta_x;
296 prev_controller_delta_z_= delta_z;
297}
298
299void MovementController::ClipCameraAngles()
300{

Callers 1

ProcessEventsMethod · 0.80

Calls 3

GetOrSetFloatMethod · 0.80
SetSettingMethod · 0.80
GetOrSetBoolMethod · 0.80

Tested by

no test coverage detected