/* ============ G_TestEntityPosition ============ */ gentity_t *G_TestEntityPosition( gentity_t *ent ) { trace_t tr; qboolean capsule; vec3_t origin; int mask; if ( ent->client ) { VectorCopy( ent->client->ps.origin, origin ); capsule = ent->client->ps.capsule; } else { VectorCopy( ent->s.pos.trBase, origin ); capsule = ent->s.capsule; } if ( ent->clipmask ) { mask = ent->clipmask; } else { mask = MASK_SOLID; } if ( capsule ) { trap_TraceCapsule( &tr, origin, ent->s.mins, ent->s.maxs, origin, ent->s.number, mask ); } else { trap_Trace( &tr, origin, ent->s.mins, ent->s.maxs, origin, ent->s.number, mask ); } if (tr.startsolid) return &g_entities[ tr.entityNum ]; return NULL; }
/* ============ G_TestEntityPosition ============ */ gentity_t *G_TestEntityPosition( gentity_t *ent ) { trace_t tr; collisionType_t collisionType; vec3_t origin; int mask; if ( ent->player ) { VectorCopy( ent->player->ps.origin, origin ); collisionType = ent->player->ps.collisionType; } else { VectorCopy( ent->s.pos.trBase, origin ); collisionType = ent->s.collisionType; } if ( ent->clipmask ) { mask = ent->clipmask; } else { mask = MASK_SOLID; } if ( collisionType == CT_CAPSULE ) { trap_TraceCapsule( &tr, origin, ent->s.mins, ent->s.maxs, origin, ent->s.number, mask ); } else { trap_Trace( &tr, origin, ent->s.mins, ent->s.maxs, origin, ent->s.number, mask ); } if (tr.startsolid) return &g_entities[ tr.entityNum ]; return NULL; }
void trap_TraceCapsuleNoEnts(trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentmask) { trap_TraceCapsule(results, start, mins, maxs, end, -2, contentmask); }