355 {
356 bool muzzle_shot;
357 vector contact_point_cam_trace;
358 vector contact_point_muzzle_trace;
359
360 vector aim_at_position;
361
362 vector contact_dir_muzzle;
363 vector contact_dir;
364
365 vector contact_point;
366
367 int contact_component;
368 int contact_component_muzzle;
369
370 float distance_to_aim_at;
371 vector end_point = camera_pos + camera_dir * 100;
373 vector weapon_aim_direction = usti_hlavne_position - konec_hlavne_position;
375
378 Class.CastTo(player_o, player);
379
380 if ( DayZPhysics.RaycastRV(start_point, end_point, contact_point_cam_trace, contact_dir, contact_component,null, null, player_o , false, false, ObjIntersectFire) )
381 {
383 aim_at_position = contact_point_cam_trace;
384
385 if ( DayZPhysics.RaycastRV(usti_hlavne_position, contact_point_cam_trace, contact_point_muzzle_trace, contact_dir, contact_component,null, null, player_o , false, false, ObjIntersectFire, 0.05) )
386 {
387 float collision_distance = vector.Distance(contact_point_cam_trace, contact_point_muzzle_trace);
388 float muzzle_collision_distance = vector.Distance(usti_hlavne_position, contact_point_muzzle_trace);
389
391 {
392 muzzle_shot = true;
393 aim_at_position = contact_point_muzzle_trace;
394 }
395 }
396 }
397
398
399
400 distance_to_aim_at = vector.Distance(camera_pos, aim_at_position);
401
403 {
407
408 vector contact_point_temp;
409
410 if (muzzle_shot)
411 {
415 }
416 else
417 {
418 vector dir = contact_point_cam_trace - camera_pos;
420 dir = dir * 100;
421 float dst = vector.
Distance(camera_pos, contact_point_cam_trace);
422 float dist2 = vector.Distance(camera_pos, contact_point_cam_trace);
423
424
427 }
428 }
429
430 float clamped_distance = Math.Clamp(distance_to_aim_at, 0 , 100);
431 float distance_normalized = Math.InverseLerp(0, 100, clamped_distance);
432 float hit_sphere_size = Math.Lerp(0.025, 0.75, distance_normalized);
433
438
439 }
proto native DayZPlayer GetPlayer()
const float CAMERA_TRACE_MIN_DISTANCE_TOLERANCE
const float MAX_MUZZLE_DISTANCE_TOLERANCE
const float CAMERA_BULLET_ORIGIN_OFFSET
proto float Normalize()
Normalizes vector. Returns length.
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
proto native CGame GetGame()
void PrintString(string s)
Helper for printing out string expression. Example: PrintString("Hello " + var);.