Skip to content

Commit 3c8f2a0

Browse files
committed
Fixed game crashes due to invalid vertex IDs
1 parent a2d3889 commit 3c8f2a0

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/xrAICore/Navigation/graph_engine_inline.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ template <typename _Graph, typename _Parameters>
3737
inline bool CGraphEngine::search(const _Graph& graph, const _index_type& start_node, const _index_type& dest_node,
3838
xr_vector<_index_type>* node_path, const _Parameters& parameters)
3939
{
40+
const auto& level_graph = GEnv.AISpace->level_graph();
41+
const bool vertices_valid = level_graph.valid_vertex_id(start_node) && level_graph.valid_vertex_id(dest_node);
42+
VERIFY2(vertices_valid, make_string("start_node: %u, dest_node: %u", start_node, dest_node));
43+
if (!vertices_valid)
44+
return false;
45+
4046
//ScopeLock scope(&m_lock);
4147
START_PROFILE("graph_engine")
4248
START_PROFILE("graph_engine/search")

src/xrGame/CustomMonster.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -745,11 +745,16 @@ bool CCustomMonster::net_Spawn(CSE_Abstract* DC)
745745
else
746746
{
747747
Fvector dest_position;
748-
u32 level_vertex_id;
749-
level_vertex_id = movement().restrictions().accessible_nearest(
750-
ai().level_graph().vertex_position(ai_location().level_vertex_id()), dest_position);
751-
movement().set_level_dest_vertex(level_vertex_id);
752-
movement().detail().set_dest_position(dest_position);
748+
const Fvector vertex_pos = ai().level_graph().vertex_position(ai_location().level_vertex_id());
749+
const u32 level_vertex_id = movement().restrictions().accessible_nearest(vertex_pos, dest_position);
750+
751+
const bool vertex_id_is_valid = ai().game_graph().valid_vertex_id(level_vertex_id);
752+
VERIFY(vertex_id_is_valid);
753+
if (vertex_id_is_valid)
754+
{
755+
movement().set_level_dest_vertex(level_vertex_id);
756+
movement().detail().set_dest_position(dest_position);
757+
}
753758
}
754759
}
755760

0 commit comments

Comments
 (0)