void align_to_surface(ENTITY* Planet, ENTITY* Vehicle)
{
VECTOR start_trace;
VECTOR Temp_Vec;
//get the surface position
vec_set(start_trace,Vehicle.x);
vec_sub(start_trace,Planet.x);
vec_normalize(start_trace,vec_length(start_trace)*2);
vec_add(start_trace,Planet.x);
me=Vehicle;
c_trace(start_trace, Planet.x,IGNORE_ME|IGNORE_PASSABLE);
//DEBUGGING
//draw_line3d(start_trace,NULL,100);
//draw_line3d(start_trace,COLOR_RED,100);
//draw_line3d(Planet.x,COLOR_RED,100);
//draw_point3d(hit.x,COLOR_RED,100,16);
//place vehicle on surface
//(taking into account vehicle min_z)
vec_set(Temp_Vec,hit.x);
vec_sub(Temp_Vec,Planet.x);
//DEBUGGING
DEBUG_VAR(vec_length(Temp_Vec), 100);
vec_normalize(Temp_Vec,vec_length(Temp_Vec.x)-Vehicle.min_z);
//DEBUGGING
DEBUG_VAR(vec_length(Temp_Vec), 120);
vec_add(Temp_Vec,Planet.x);
vec_set(Vehicle.x,Temp_Vec);
//rotate towards planet core
vec_sub(Temp_Vec,Planet.x);
alignToVec(Vehicle.pan, hit.nx, vector(0, 0, 1), 1);
alignToVec(Vehicle.pan, hit.nx, vector(0, 0, 1), 1);
alignToVec(Vehicle.pan, hit.nx, vector(0, 0, 1), 1);
alignToVec(Vehicle.pan, hit.nx, vector(0, 0, 1), 1);
alignToVec(Vehicle.pan, hit.nx, vector(0, 0, 1), 1);
}