Commit two patches from SmokingGuns's Tequila, fixing problems with very fast movers and a typo in the string drawing function. (#4329) and (#4330)

This commit is contained in:
Thilo Schulz 2009-11-06 12:02:02 +00:00
parent 4ba2452f83
commit 223b851b7b
2 changed files with 20 additions and 1 deletions

View file

@ -714,7 +714,7 @@ static void UI_DrawProportionalString2( int x, int y, const char* str, vec4_t co
trap_R_SetColor( color ); trap_R_SetColor( color );
ax = x * cgs.screenXScale + cgs.screenXBias; ax = x * cgs.screenXScale + cgs.screenXBias;
ay = y * cgs.screenXScale; ay = y * cgs.screenYScale;
s = str; s = str;
while ( *s ) while ( *s )

View file

@ -1308,6 +1308,25 @@ void Reached_Train( gentity_t *ent ) {
ent->s.pos.trDuration = length * 1000 / speed; ent->s.pos.trDuration = length * 1000 / speed;
// Tequila comment: Be sure to send to clients after any fast move case
ent->r.svFlags &= ~SVF_NOCLIENT;
// Tequila comment: Fast move case
if(ent->s.pos.trDuration<1) {
// Tequila comment: As trDuration is used later in a division, we need to avoid that case now
// With null trDuration,
// the calculated rocks bounding box becomes infinite and the engine think for a short time
// any entity is riding that mover but not the world entity... In rare case, I found it
// can also stuck every map entities after func_door are used.
// The desired effect with very very big speed is to have instant move, so any not null duration
// lower than a frame duration should be sufficient.
// Afaik, the negative case don't have to be supported.
ent->s.pos.trDuration=1;
// Tequila comment: Don't send entity to clients so it becomes really invisible
ent->r.svFlags |= SVF_NOCLIENT;
}
// looping sound // looping sound
ent->s.loopSound = next->soundLoop; ent->s.loopSound = next->soundLoop;