Moderators: sparcdr, torhu, Tequila
Index: code/game/g_mover.c
===================================================================
--- code/game/g_mover.c (revision 233)
+++ code/game/g_mover.c (revision 235)
@@ -2032,6 +2032,20 @@
length = VectorLength( move );
ent->s.pos.trDuration = length * 1000 / speed;
+#ifdef SMOKINGUNS
+ if(ent->s.pos.trDuration<1) {
+ // Tequila comment: As trDuration is used later in a division, we need to avoid that case now
+ // I think the major side effect is the lag problem in dm_train as very high speed are
+ // used to cycle the landscape rocks with a func_train mover. 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 funct_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;
+ }
+#endif
// looping sound
ent->s.loopSound = next->soundLoop;