mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'lineondemand-crash-fix' into 'master'
Obj_CrossCheckpoints crash fix Closes #1519 See merge request kart-krew-dev/ring-racers-internal!2552
This commit is contained in:
commit
c41b3b3fa0
1 changed files with 7 additions and 6 deletions
|
|
@ -579,15 +579,18 @@ void Obj_CrossCheckpoints(player_t* player, fixed_t old_x, fixed_t old_y)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LineOnDemand* gate;
|
|
||||||
const srb2::Vector<line_t*>* lines = g_checkpoints.lines_for(chk);
|
const srb2::Vector<line_t*>* lines = g_checkpoints.lines_for(chk);
|
||||||
|
INT32 side;
|
||||||
|
INT32 oldside;
|
||||||
|
|
||||||
if (!lines || lines->empty())
|
if (!lines || lines->empty())
|
||||||
{
|
{
|
||||||
LineOnDemand dyngate = chk->crossing_line();
|
LineOnDemand dyngate = chk->crossing_line();
|
||||||
if (!ray.overlaps(dyngate))
|
if (!ray.overlaps(dyngate))
|
||||||
return false;
|
return false;
|
||||||
gate = &dyngate;
|
|
||||||
|
side = P_PointOnLineSide(player->mo->x, player->mo->y, &dyngate);
|
||||||
|
oldside = P_PointOnLineSide(old_x, old_y, &dyngate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -606,7 +609,8 @@ void Obj_CrossCheckpoints(player_t* player, fixed_t old_x, fixed_t old_y)
|
||||||
}
|
}
|
||||||
|
|
||||||
line_t* line = *it;
|
line_t* line = *it;
|
||||||
gate = static_cast<LineOnDemand*>(line);
|
side = P_PointOnLineSide(player->mo->x, player->mo->y, line);
|
||||||
|
oldside = P_PointOnLineSide(old_x, old_y, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the bounding boxes of the two lines
|
// Check if the bounding boxes of the two lines
|
||||||
|
|
@ -615,9 +619,6 @@ void Obj_CrossCheckpoints(player_t* player, fixed_t old_x, fixed_t old_y)
|
||||||
// but thankfully that doesn't seem to happen, under
|
// but thankfully that doesn't seem to happen, under
|
||||||
// normal circumstances.
|
// normal circumstances.
|
||||||
|
|
||||||
INT32 side = P_PointOnLineSide(player->mo->x, player->mo->y, gate);
|
|
||||||
INT32 oldside = P_PointOnLineSide(old_x, old_y, gate);
|
|
||||||
|
|
||||||
if (side == oldside)
|
if (side == oldside)
|
||||||
{
|
{
|
||||||
// Did not cross.
|
// Did not cross.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue