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

◆ IsBaseViable()

bool Hologram::IsBaseViable ( )
inlineprotected

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

588 {
589 //This function is not required to solve server-side fixes for clipping, saves calculations and potential false negatives
590 if (GetGame().IsServer() && GetGame().IsMultiplayer())
591 return true;
592
593 if (CfgGameplayHandler.GetDisableIsBaseViableCheck())
594 return true;
595
596
597
598 vector from_left_close = m_Projection.CoordToParent(GetLeftCloseProjectionVector()) + PLACEMENT_RC_START_OFFSET;
599 vector to_left_close_down = from_left_close + PLACEMENT_RC_END_OFFSET;
600
601 vector from_right_close = m_Projection.CoordToParent(GetRightCloseProjectionVector()) + PLACEMENT_RC_START_OFFSET;
602 vector to_right_close_down = from_right_close + PLACEMENT_RC_END_OFFSET;
603
604 vector from_left_far = m_Projection.CoordToParent(GetLeftFarProjectionVector() + PLACEMENT_RC_START_OFFSET);
605 vector to_left_far_down = from_left_far + PLACEMENT_RC_END_OFFSET;
606
607 vector from_right_far = m_Projection.CoordToParent(GetRightFarProjectionVector()) + PLACEMENT_RC_START_OFFSET;
608 vector to_right_far_down = from_right_far + PLACEMENT_RC_END_OFFSET;
609
610 vector contact_pos_left_close;
611 vector contact_pos_right_close;
612 vector contact_pos_left_far;
613 vector contact_pos_right_far;
614 vector contact_dir_left_close;
615 vector contact_dir_right_close;
616 vector contact_dir_left_far;
617 vector contact_dir_right_far;
618 int contact_component_left_close;
619 int contact_component_right_close;
620 int contact_component_left_far;
621 int contact_component_right_far;
622 set<Object> results_left_close = new set<Object>;
623 set<Object> results_right_close = new set<Object>;
624 set<Object> results_left_far = new set<Object>;
625 set<Object> results_right_far = new set<Object>;
626 Object obj_left_close;
627 Object obj_right_close;
628 Object obj_left_far;
629 Object obj_right_far;
630
631 //Not sure what the intention here was before, but it boiled down to a very bloated version of what you see here right now
632 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);
633 if (results_left_close.Count() > 0)
634 obj_left_close = results_left_close[results_left_close.Count() - 1];
635
636 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);
637 if (results_right_close.Count() > 0)
638 obj_right_close = results_right_close[results_right_close.Count() - 1];
639
640 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);
641 if (results_left_far.Count() > 0)
642 obj_left_far = results_left_far[results_left_far.Count() - 1];
643
644 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);
645 if (results_right_far.Count() > 0)
646 obj_right_far = results_right_far[results_right_far.Count() - 1];
647
648 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);
649 }
bool IsBaseIntact(Object under_left_close, Object under_right_close, Object under_left_far, Object under_right_far)
Определения Hologram.c:700
vector GetLeftFarProjectionVector()
Определения Hologram.c:1056
EntityAI m_Projection
Определения Hologram.c:22
const vector PLACEMENT_RC_START_OFFSET
Определения Hologram.c:18
vector GetRightFarProjectionVector()
Определения Hologram.c:1065
const vector PLACEMENT_RC_END_OFFSET
Определения Hologram.c:19
vector GetLeftCloseProjectionVector()
Определения Hologram.c:1038
vector GetRightCloseProjectionVector()
Определения Hologram.c:1046
bool IsBaseFlat(vector contact_pos_left_close, vector contact_pos_right_close, vector contact_pos_left_far, vector contact_pos_right_far)
Определения Hologram.c:786
bool IsBaseStatic(Object objectToCheck)
Определения Hologram.c:682
class LOD Object
proto native CGame GetGame()

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

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