Here is my best attempt from my mobile.
Two extra traces from camera left and right.


Code:
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 );
}



BTW vec_scale messes up the direction it should also be vec_nornalize
Code:
VECTOR vecTarget;
   vec_for_angle ( vecTarget, my.skNextPan );
	
  // vec_scale ( vecTarget, -80 );
     vec_normalize( vecTarget, -80);



Bonus homework - vec_scale and vec_normalize both multiply the elements of a vector. So find out what is the difference and why it is important.

Last edited by DriftWood; 02/21/18 06:20.