DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ IsBaseViable()

bool Hologram::IsBaseViable ( )
inlineprotected

См. определение в файле Hologram.c строка 638

639 {
640 //This function is not required to solve server-side fixes for clipping, saves calculations and potential false negatives
641 if (g_Game.IsServer() && g_Game.IsMultiplayer())
642 return true;
643
644 if (CfgGameplayHandler.GetDisableIsBaseViableCheck())
645 return true;
646
647
648
649 vector from_left_close = m_Projection.CoordToParent(GetLeftCloseProjectionVector()) + PLACEMENT_RC_START_OFFSET;
650 vector to_left_close_down = from_left_close + PLACEMENT_RC_END_OFFSET;
651
652 vector from_right_close = m_Projection.CoordToParent(GetRightCloseProjectionVector()) + PLACEMENT_RC_START_OFFSET;
653 vector to_right_close_down = from_right_close + PLACEMENT_RC_END_OFFSET;
654
655 vector from_left_far = m_Projection.CoordToParent(GetLeftFarProjectionVector() + PLACEMENT_RC_START_OFFSET);
656 vector to_left_far_down = from_left_far + PLACEMENT_RC_END_OFFSET;
657
658 vector from_right_far = m_Projection.CoordToParent(GetRightFarProjectionVector()) + PLACEMENT_RC_START_OFFSET;
659 vector to_right_far_down = from_right_far + PLACEMENT_RC_END_OFFSET;
660
661 vector contact_pos_left_close;
662 vector contact_pos_right_close;
663 vector contact_pos_left_far;
664 vector contact_pos_right_far;
665 vector contact_dir_left_close;
666 vector contact_dir_right_close;
667 vector contact_dir_left_far;
668 vector contact_dir_right_far;
669 int contact_component_left_close;
670 int contact_component_right_close;
671 int contact_component_left_far;
672 int contact_component_right_far;
673 set<Object> results_left_close = new set<Object>;
674 set<Object> results_right_close = new set<Object>;
675 set<Object> results_left_far = new set<Object>;
676 set<Object> results_right_far = new set<Object>;
677 Object obj_left_close;
678 Object obj_right_close;
679 Object obj_left_far;
680 Object obj_right_far;
681
682 //Not sure what the intention here was before, but it boiled down to a very bloated version of what you see here right now
683 DayZPhysics.RaycastRV(from_left_close, to_left_close_down, contact_pos_left_close, contact_dir_left_close, contact_component_left_close, results_left_close, null, m_Projection, false, false, ObjIntersectFire);
684 if (results_left_close.Count() > 0)
685 obj_left_close = results_left_close[results_left_close.Count() - 1];
686
687 DayZPhysics.RaycastRV(from_right_close, to_right_close_down, contact_pos_right_close, contact_dir_right_close, contact_component_right_close, results_right_close, null, m_Projection, false, false, ObjIntersectFire);
688 if (results_right_close.Count() > 0)
689 obj_right_close = results_right_close[results_right_close.Count() - 1];
690
691 DayZPhysics.RaycastRV(from_left_far, to_left_far_down, contact_pos_left_far, contact_dir_left_far, contact_component_left_far, results_left_far, null, m_Projection, false, false, ObjIntersectFire);
692 if (results_left_far.Count() > 0)
693 obj_left_far = results_left_far[results_left_far.Count() - 1];
694
695 DayZPhysics.RaycastRV(from_right_far, to_right_far_down, contact_pos_right_far, contact_dir_right_far, contact_component_right_far, results_right_far, null, m_Projection, false, false, ObjIntersectFire);
696 if (results_right_far.Count() > 0)
697 obj_right_far = results_right_far[results_right_far.Count() - 1];
698
699 return IsBaseIntact(obj_left_close, obj_right_close, obj_left_far, obj_right_far ) && IsBaseStatic( obj_left_close ) && IsBaseFlat( contact_pos_left_close, contact_pos_right_close, contact_pos_left_far, contact_pos_right_far);
700 }
DayZGame g_Game
Определения DayZGame.c:3942
bool IsBaseIntact(Object under_left_close, Object under_right_close, Object under_left_far, Object under_right_far)
Определения Hologram.c:751
vector GetLeftFarProjectionVector()
Определения Hologram.c:1107
EntityAI m_Projection
Определения Hologram.c:22
const vector PLACEMENT_RC_START_OFFSET
Определения Hologram.c:18
vector GetRightFarProjectionVector()
Определения Hologram.c:1116
const vector PLACEMENT_RC_END_OFFSET
Определения Hologram.c:19
vector GetLeftCloseProjectionVector()
Определения Hologram.c:1089
vector GetRightCloseProjectionVector()
Определения Hologram.c:1097
bool IsBaseFlat(vector contact_pos_left_close, vector contact_pos_right_close, vector contact_pos_left_far, vector contact_pos_right_far)
Определения Hologram.c:837
bool IsBaseStatic(Object objectToCheck)
Определения Hologram.c:733
class LOD Object

Перекрестные ссылки g_Game, CfgGameplayHandler::GetDisableIsBaseViableCheck(), GetLeftCloseProjectionVector(), GetLeftFarProjectionVector(), GetRightCloseProjectionVector(), GetRightFarProjectionVector(), IsBaseFlat(), IsBaseIntact(), IsBaseStatic(), m_Projection, PLACEMENT_RC_END_OFFSET, PLACEMENT_RC_START_OFFSET и DayZPhysics::RaycastRV().

Используется в EvaluateCollision().