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

◆ PerformRoofCheckForBase()

override bool BaseBuildingBase::PerformRoofCheckForBase ( string partName,
PlayerBase player,
out bool result )
inlineprivate

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

134 {
135 if (CfgGameplayHandler.GetDisablePerformRoofCheck())
136 return false;
137
138 if (partName != "level_1_base" && partName != "level_2_base" && partName != "level_3_base" && partName != "level_3_roof")
139 {
140 return false;
141 }
142
143 vector center;
144 vector orientation = GetOrientation();
145 vector edge_length;
146 vector min_max[2];
147 ref array<Object> excluded_objects = new array<Object>;
148 ref array<Object> collided_objects = new array<Object>;
149
150 excluded_objects.Insert( this );
151 excluded_objects.Insert( player );
152
153 if ( partName == "level_2_base" )
154 {
155 min_max[0] = GetMemoryPointPos( "level_2_wall_1_down_min" );
156 min_max[1] = GetMemoryPointPos( "level_2_roof_max" );
157 }
158 else if ( partName == "level_3_base" )
159 {
160 min_max[0] = GetMemoryPointPos( "level_3_wall_1_down_min" );
161 min_max[1] = GetMemoryPointPos( "level_3_wall_2_up_max" );
162 }
163 else if ( partName == "level_3_roof" )
164 {
165 min_max[0] = GetMemoryPointPos( "level_3_roof_min" );
166 min_max[1] = GetMemoryPointPos( "level_3_roof_max" );
167 }
168 else
169 {
170 //min_max[0] = GetMemoryPointPos( "level_1_wall_1_up_min" );
171 //min_max[0] = GetMemoryPointPos( "level_1_wall_1_down_min" );
172 min_max[0] = GetMemoryPointPos( "level_1_collisioncheck_min" );
173 min_max[1] = GetMemoryPointPos( "level_1_roof_max" );
174 }
175 center = GetPosition();
176 center[1] = center[1] + ( min_max[1][1] + min_max[0][1] ) / 2;
177
178 edge_length[0] = min_max[1][0] - min_max[0][0];
179 edge_length[2] = min_max[1][2] - min_max[0][2];
180 edge_length[1] = min_max[1][1] - min_max[0][1];
181
182 result = false;
183 /*result = */g_Game.IsBoxCollidingGeometry( center, orientation, edge_length, ObjIntersectView, ObjIntersectGeom, excluded_objects, collided_objects );
184 if ( collided_objects.Count() > 0 )
185 {
186 foreach ( Object o : collided_objects )
187 {
188 if (Building.Cast(o))
189 {
190 result = true;
191 }
192 }
193 }
194 return true;
195 }
vector GetOrientation()
Определения AreaDamageManager.c:306
DayZGame g_Game
Определения DayZGame.c:3942
class LOD Object
vector GetPosition()
Get the world position of the Effect.
Определения Effect.c:473

Перекрестные ссылки g_Game, CfgGameplayHandler::GetDisablePerformRoofCheck(), GetOrientation() и GetPosition().

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