0
0
Fork 0
mirror of https://github.com/yquake2/rogue.git synced 2025-04-14 22:21:33 +00:00

Merge pull request from BjossiAlfreds/collision

Prevent dead bodies from obstructing elevators and falling through them
This commit is contained in:
Yamagi 2022-10-08 15:37:59 +02:00 committed by GitHub
commit 0dda457eb5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -53,7 +53,10 @@ SV_TestEntityPosition(edict_t *ent)
return NULL;
}
if (ent->clipmask)
/* dead bodies are supposed to not be solid so lets
ensure they only collide with BSP during pushmoves
*/
if (ent->clipmask && !(ent->svflags & SVF_DEADMONSTER))
{
mask = ent->clipmask;
}
@ -518,6 +521,17 @@ retry:
trace = gi.trace(start, ent->mins, ent->maxs, end, ent, mask);
/* startsolid treats different-content volumes
as continuous, like the bbox of a monster/player
and the floor of an elevator. So do another trace
that only collides with BSP so that we make a best
effort to keep these entities inside non-solid space
*/
if (trace.startsolid && (mask & ~MASK_SOLID))
{
trace = gi.trace (start, ent->mins, ent->maxs, end, ent, MASK_SOLID);
}
VectorCopy(trace.endpos, ent->s.origin);
gi.linkentity(ent);