890 {
891 if (CfgGameplayHandler.GetDisableIsInTerrainCheck())
892 return false;
893 vector fromHeightOffset = "0 0.3 0";
894 vector toHeightOffset = "0 1 0";
895
897 vector to_left_close_down = from_left_close + toHeightOffset;
898
900 vector to_right_close_down = from_right_close + toHeightOffset;
901
903 vector to_left_far_down = from_left_far + toHeightOffset;
904
906 vector to_right_far_down = from_right_far + toHeightOffset;
907
908 vector contact_pos_left_close;
909 vector contact_pos_right_close;
910 vector contact_pos_left_far;
911 vector contact_pos_right_far;
912
913 vector contact_dir_left_close;
914 vector contact_dir_right_close;
915 vector contact_dir_left_far;
916 vector contact_dir_right_far;
917
918 int contact_component_left_close;
919 int contact_component_right_close;
920 int contact_component_left_far;
921 int contact_component_right_far;
922
923 #ifdef DIAG_DEVELOPER
924
925 set<Object> lcO = new set<Object>();
926 set<Object> rcO = new set<Object>();
927 set<Object> lfO = new set<Object>();
928 set<Object> rfO = new set<Object>();
929 bool lc = DayZPhysics.RaycastRV( from_left_close, to_left_close_down, contact_pos_left_close, contact_dir_left_close, contact_component_left_close, lcO,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire );
930 bool rc = DayZPhysics.RaycastRV( from_right_close, to_right_close_down, contact_pos_right_close, contact_dir_right_close, contact_component_right_close, rcO,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire );
931 bool lf = DayZPhysics.RaycastRV( from_left_far, to_left_far_down, contact_pos_left_far, contact_dir_left_far, contact_component_left_far, lfO,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire );
932 bool rf = DayZPhysics.RaycastRV( from_right_far, to_right_far_down, contact_pos_right_far, contact_dir_right_far, contact_component_right_far, rfO,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire );
933 bool isTrue = ( lc || rc || lf || rf );
934 string text = "";
935 if (isTrue)
936 {
937 if (lc)
938 text += " | lc";
939 if (rc)
940 text += " | rc";
941 if (lf)
942 text += " | lf";
943 if (rf)
944 text += " | rf";
945
946 if (lcO.Count() > 0)
947 text += " | lcO: " + lcO[0];
948 if (rcO.Count() > 0)
949 text += " | rcO: " + rcO[0];
950 if (lfO.Count() > 0)
951 text += " | lfO: " + lfO[0];
952 if (rfO.Count() > 0)
953 text += " | rfO: " + rfO[0];
954
955 array<bool> conditions = {!lc, !rc, !lf, !rf};
956 DrawBaseSpheres(conditions);
957 }
958 DebugText("IsInTerrain: ", false, isTrue, text);
959 #endif
960
961 if (DayZPhysics.RaycastRV( from_left_close, to_left_close_down, contact_pos_left_close, contact_dir_left_close, contact_component_left_close, NULL,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire ))
962 return true;
963
964 if (DayZPhysics.RaycastRV( from_right_close, to_right_close_down, contact_pos_right_close, contact_dir_right_close, contact_component_right_close, NULL,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire ))
965 return true;
966
967 if (DayZPhysics.RaycastRV( from_left_far, to_left_far_down, contact_pos_left_far, contact_dir_left_far, contact_component_left_far, NULL,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire ))
968 return true;
969
970 if (DayZPhysics.RaycastRV( from_right_far, to_right_far_down, contact_pos_right_far, contact_dir_right_far, contact_component_right_far, NULL,
m_Projection,
m_Projection,
false,
true, ObjIntersectFire ))
971 return true;
972
973 return false;
974 }
vector GetLeftFarProjectionVector()
vector GetRightFarProjectionVector()
vector GetLeftCloseProjectionVector()
vector GetRightCloseProjectionVector()