@@ -42,17 +42,17 @@ bool CSpaceRestrictorWrapper::inside(const Fvector& position, float radius) cons
4242 {
4343 switch (i.type )
4444 {
45- case 0 :
45+ case CShapeData::cfSphere :
4646 {
4747 Fsphere temp;
4848 m_xform.transform_tiny (temp.P , i.data .sphere .P );
4949 temp.R = i.data .sphere .R ;
5050 if (sphere.intersect (temp))
51- return ( true ) ;
51+ return true ;
5252
5353 continue ;
5454 }
55- case 1 :
55+ case CShapeData::cfBox :
5656 {
5757 Fmatrix temp;
5858 temp.mul_43 (m_xform, i.data .box );
@@ -97,7 +97,7 @@ bool CSpaceRestrictorWrapper::inside(const Fvector& position, float radius) cons
9797 plane.build (points[1 ], points[0 ], points[6 ]);
9898 if (plane.classify (sphere.P ) > sphere.R )
9999 break ;
100- return ( true ) ;
100+ return true ;
101101 }
102102 default : NODEFAULT;
103103 }
@@ -135,15 +135,15 @@ void CSpaceRestrictorWrapper::fill_shape(const CShapeData::shape_def& shape)
135135 Fvector start, dest;
136136 switch (shape.type )
137137 {
138- case 0 :
138+ case CShapeData::cfSphere :
139139 {
140140 start.sub (Fvector ().set (shape.data .sphere .P ), Fvector ().set (shape.data .sphere .R , 0 .f , shape.data .sphere .R ));
141141 dest.add (Fvector ().set (shape.data .sphere .P ), Fvector ().set (shape.data .sphere .R , 0 .f , shape.data .sphere .R ));
142142 start.add (object ().o_Position );
143143 dest.add (object ().o_Position );
144144 break ;
145145 }
146- case 1 :
146+ case CShapeData::cfBox :
147147 {
148148 Fvector points[8 ] = {Fvector ().set (-.5f , -.5f , -.5f ), Fvector ().set (-.5f , -.5f , +.5f ),
149149 Fvector ().set (-.5f , +.5f , -.5f ), Fvector ().set (-.5f , +.5f , +.5f ), Fvector ().set (+.5f , -.5f , -.5f ),
@@ -207,7 +207,6 @@ struct sort_by_xz_predicate
207207
208208void CSpaceRestrictorWrapper::build_border ()
209209{
210- typedef CShapeData::ShapeVec ShapeVec;
211210 for (auto &i : object ().shapes )
212211 fill_shape (i);
213212
@@ -246,27 +245,30 @@ void CSpaceRestrictorWrapper::verify_connectivity()
246245
247246 if (!level_graph ().valid_vertex_id (start_vertex_id))
248247 {
249- Msg (" Warning : restrictor %s covers the whole AI map" );
248+ Msg (" Warning : restrictor %s covers the whole AI map" , object (). name_replace () );
250249 return ;
251250 }
252251
253- level_graph ().set_mask (m_border);
252+ // level_graph().set_mask(m_border);
253+ level_graph ().set_mask (m_internal);
254254
255255 xr_vector<u32 > nodes;
256256
257257 graph_engine ().search (level_graph (), start_vertex_id, start_vertex_id, &nodes,
258258 GraphEngineSpace::CFlooder (GraphEngineSpace::_dist_type (6000 ), GraphEngineSpace::_iteration_type (-1 ), u32 (-1 )));
259259
260- level_graph ().clear_mask (m_border);
260+ // level_graph().clear_mask(m_border);
261+ level_graph ().clear_mask (m_internal);
261262
262263 VERIFY (nodes.size () + m_internal.size () <= level_graph ().header ().vertex_count ());
263264 if (nodes.size () + m_internal.size () == level_graph ().header ().vertex_count ())
264265 return ;
265266
266- Msg (" ! %d nodes are disconnected!" , level_graph ().header ().vertex_count () - (nodes.size () + m_internal.size ()));
267+ Msg (" ! %7d nodes are disconnected! Restrictor '%s' separates AI map into several disconnected components" ,
268+ level_graph ().header ().vertex_count () - (nodes.size () + m_internal.size ()), object ().name_replace ());
267269
268- R_ASSERT3 (nodes.size () + m_internal.size () == level_graph ().header ().vertex_count (),
269- " Restrictor separates AI map into several disconnected components" , object ().name_replace ());
270+ // R_ASSERT3(nodes.size() + m_internal.size() == level_graph().header().vertex_count(),
271+ // "Restrictor separates AI map into several disconnected components", object().name_replace());
270272}
271273
272274void CSpaceRestrictorWrapper::verify (CLevelGraph& level_graph, CGraphEngine& graph_engine, bool no_separator_check)
0 commit comments