static qbool InitFlyby(player_state_t *self, player_state_t *player, int checkvis) { float f, max; vec3_t vec, vec2; vec3_t forward, right, up; VectorCopy(player->viewangles, vec); vec[0] = 0; AngleVectors (vec, forward, right, up); max = 1000; VectorAdd(forward, up, vec2); VectorAdd(vec2, right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorAdd(forward, up, vec2); VectorSubtract(vec2, right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorAdd(forward, right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorSubtract(forward, right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorAdd(forward, up, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorSubtract(forward, up, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorAdd(up, right, vec2); VectorSubtract(vec2, forward, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorSubtract(up, right, vec2); VectorSubtract(vec2, forward, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } // invert VectorSubtract(vec3_origin, forward, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorCopy(forward, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } // invert VectorSubtract(vec3_origin, right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } VectorCopy(right, vec2); if ((f = Cam_TryFlyby(self, player, vec2, checkvis)) < max) { max = f; VectorCopy(vec2, vec); } // ack, can't find him if (max >= 1000) return false; locked = true; VectorCopy(vec, desired_position); return true; }
static qboolean InitFlyby (player_state_t * self, player_state_t * player, int checkvis) { float f, max; vec3_t forward, right, up, vec, vec2; VectorCopy (player->viewangles, vec); vec[0] = 0; AngleVectors (vec, forward, right, up); // for (i = 0; i < 3; i++) // forward[i] *= 3; max = 1000; VectorAdd (forward, up, vec2); VectorAdd (vec2, right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorAdd (forward, up, vec2); VectorSubtract (vec2, right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorAdd (forward, right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorSubtract (forward, right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorAdd (forward, up, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorSubtract (forward, up, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorAdd (up, right, vec2); VectorSubtract (vec2, forward, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorSubtract (up, right, vec2); VectorSubtract (vec2, forward, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } // invert VectorNegate (forward, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorCopy (forward, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } // invert VectorNegate (right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } VectorCopy (right, vec2); if ((f = Cam_TryFlyby (self, player, vec2, checkvis)) < max) { max = f; VectorCopy (vec2, vec); } // ack, can't find him if (max >= 1000) { // Cam_Unlock (); return false; } locked = true; VectorCopy (vec, desired_position); return true; }