This is interesting, it seems that changing the Hull size (
size) property of a func_pushable makes no difference at all, because it never gets passed to the
CPushable::KeyValue()
method. So, the following code never gets to run:
switch (bbox)
{
case 0: // Point
UTIL_SetSize(pev, Vector(-8, -8, -8), Vector(8, 8, 8));
break;
case 2: // Big Hull!?!? !!!BUGBUG Figure out what this hull really is
UTIL_SetSize(pev, VEC_DUCK_HULL_MIN * 2, VEC_DUCK_HULL_MAX * 2);
break;
case 3: // Player duck
UTIL_SetSize(pev, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX);
break;
default:
case 1: // Player
UTIL_SetSize(pev, VEC_HULL_MIN, VEC_HULL_MAX);
break;
}
Perhaps
size is one of those special properties, like
friction, that are handled automatically by the engine?
Plus, even if that code got to run, the call to
SET_MODEL()
inside the
CPushable::Spawn()
method, which is run later, sets the size also, so
pev->mins
and
pev->maxs
would be overwritten (not 100% sure of this). This must be why the func_pushable ends up with an accurate bounding box, same size as the brush.
Erty said:
Maybe you could force it to use the pointhull, and do your own collision checks using its bounding box. The performance won't be as good as with cliphull-based collisions, of course.
Do you mean implementing my own collision system inside the entity code, using tracelines or something?