tmax_y = tmin_y + 1;
}
- setsize (trigger, tmin, tmax);
+ if(tmin_x < tmax_x)
+ if(tmin_y < tmax_y)
+ if(tmin_z < tmax_z)
+ {
+ setsize (trigger, tmin, tmax);
+ return;
+ }
+
+ // otherwise, something is fishy...
+ remove(trigger);
+ objerror("plat_spawn_inside_trigger: platform has odd size or lip, can't spawn");
}
void plat_hit_top()
self.pos2 = self.origin;
self.pos2_z = self.origin_z - self.height;
- plat_spawn_inside_trigger (); // the "start moving" trigger
-
self.reset = plat_reset;
plat_reset();
+
+ plat_spawn_inside_trigger (); // the "start moving" trigger
}
{
for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5); e; e = e.chain)
if(!e.conveyor.state)
- if(e.movetype != MOVETYPE_NONE)
+ if(isPushable(e))
{
vector emin = e.absmin;
vector emax = e.absmax;
if(e.flags & FL_CLIENT) // doing it via velocity has quite some advantages
continue; // done in SV_PlayerPhysics
+ setorigin(e, e.origin + self.movedir * sys_frametime);
+ move_out_of_solid(e);
+ UpdateCSQCProjectile(e);
+ /*
// stupid conveyor code
tracebox(e.origin, e.mins, e.maxs, e.origin + self.movedir * sys_frametime, MOVE_NORMAL, e);
if(trace_fraction > 0)
setorigin(e, trace_endpos);
+ */
}
}
void spawnfunc_trigger_conveyor()
{
+ SetMovedir();
EXACTTRIGGER_INIT;
conveyor_init();
}