if ( HIT_TARGET )
{
vec_set ( vecTarget, hit.x );
vec_set( vecTarget, hit.x);
vec_set ( vec_temp, hit.nx);
vec_normalize ( vec_temp, 20);
vec_add ( vecTarget, vec_temp);
if ( distance > 0 )
reset ( me, TRANSLUCENT );
else
set ( me, TRANSLUCENT );
}
else
{
// CREATE A SIDE VECTOR FROM CAMERA
vec_set(vec_temp,vector(0,20,0));
// ROTATE TO BY CAM PAN AND ADD CAM VEC
vec_rotate ( vec_temp, vector(camera.pan,0,0) );
vec_add ( vec_temp camera.x );
// YOUR CODE
reset ( me, TRANSLUCENT );
// TRACE SIDEWAYS FROM CAMERA
distance = c_trace ( camera.x, vec_temp, IGNORE_ME |
IGNORE_PASSABLE | IGNORE_SPRITES |
USE_POLYGON | IGNORE_MODELS );
//CHECK HIT
if(HIT_TARGET)
{
/* ANOTHER WAY
// SET DISTANCE INTO TEMP.Y ( POS trace = NEG Distance
vec_set( vec_temp, vector(0,-distance,0));
// ROTATE BY CAM PAN
vec_rotate(vec_temp, vector (camera.pan,0,0);
// ADD TO VecTarget ** because it's already available
vec_add(vecTarget, vec_temp); */
vec_set ( vec_temp, hit.nx);
vec_normalize ( vec_temp, 20);
vec_add ( vecTarget, vec_temp);
}
// REPEAT FOR LEFT TRACE !!!
// CREATE A SIDE VECTOR FROM CAMERA ** CHANGE TO NEG VEC
vec_set(vec_temp,vector(0,-20,0));
// ROTATE TO BY CAM PAN AND ADD CAM VEC
vec_rotate ( vec_temp, vector(camera.pan,0,0) );
vec_add ( vec_temp camera.x );
// TRACE SIDEWAYS FROM CAMERA
distance = c_trace ( camera.x, vec_temp, IGNORE_ME |
IGNORE_PASSABLE | IGNORE_SPRITES |
USE_POLYGON | IGNORE_MODELS);
//CHECK HIT
if(HIT_TARGET)
{
/* // SET DISTANCE INTO TEMP.Y (*! NEG trace = POS Distance
vec_set( vec_temp, vector(0,distance,0));
// ROTATE BY CAM PAN
vec_rotate(vec_temp, vector (camera.pan,0,0);
// ADD TO VecTarget ** because it's already available
vec_add(vecTarget, vec_temp); */
vec_set ( vec_temp, hit.nx);
vec_normalize ( vec_temp, 20);
vec_add ( vecTarget, vec_temp);
}
}
// REMOVED
//vec_lerp ( camera.x, camera.x, vecTarget, time_step );
vec_set(camera.x, vecTarget);
vec_sub ( vecOrigin, camera.x );
vec_to_angle ( camera.pan, vecOrigin );
}