//do a trace or check mouse_ent
ANGLE angle;
vec_to_angle(angle, vec_diff(NULL, door.x, actor.x));
var tmp = ang(angle.pan);
//front
if (tmp >= -90 && tmp <= 90) {
...=is front...
}
else {
...=is back...
}
//notice that I did it very rough here, you could add more steps between
//use mouse_force.y and possible x for movement (store in vector)
//with some exponential formula if mouse is moved very fast
//rotate that vector when needed if at the back of the door
//use that vector for some physx rotate force function or physx ent rotate (if registered as PH_CHAR)
// or movement function if it is for drawers