--- /dev/null Mon Apr 2 14:05:07 2001 +++ uquake/sidecam.c Mon Apr 2 14:19:31 2001 @@ -0,0 +1,51 @@ +/* Side-scroller camera by Seth Kingsley - sethk@magnesium.net */ + +#include "quakedef.h" + +cvar_t sk_sidecam = {"sk_sidecam", "0", true}; +static cvar_t _sk_sidecam_dist = {"sk_sidecam_dist", "100", true}, + _sk_sidecam_noclip = {"sk_sidecam_noclip", "0", true}, + _sk_sidecam_side = {"sk_sidecam_side", "1", true}, + _sk_sidecam_pitch = {"sk_sidecam_pitch", "0", true}; + +extern void +side_init(void) +{ + Cvar_RegisterVariable(&sk_sidecam); + Cvar_RegisterVariable(&_sk_sidecam_noclip); + Cvar_RegisterVariable(&_sk_sidecam_dist); + Cvar_RegisterVariable(&_sk_sidecam_side); + Cvar_RegisterVariable(&_sk_sidecam_pitch); +} + +extern void +side_update(void) +{ + vec3_t fav3, rav3, uav3, + dv3; + register int i; + trace_t t; + + if (_sk_sidecam_side.value != 1 && _sk_sidecam_side.value != -1) + _sk_sidecam_side.value = 1; + AngleVectors(cl.viewangles, fav3, rav3, uav3); + for (i = 0; i < 3; ++i) + dv3[i] = r_refdef.vieworg[i] - + fav3[i] + + (_sk_sidecam_side.value * + (rav3[i] * _sk_sidecam_dist.value)); + if (!_sk_sidecam_noclip.value && + !SV_RecursiveHullCheck(cl.worldmodel->hulls, + 0, 0, 1, + r_refdef.vieworg, dv3, + &t)) + VectorCopy(t.endpos, r_refdef.vieworg) + else + VectorCopy(dv3, r_refdef.vieworg) + r_refdef.viewangles[YAW]+= _sk_sidecam_side.value * 90; + if (_sk_sidecam_pitch.value) + r_refdef.viewangles[ROLL] = _sk_sidecam_side.value * + r_refdef.viewangles[PITCH]; + r_refdef.viewangles[PITCH] = 0; +} +