Hmm dont know if this is accurate enough for you but I would do first something like this and maybe it helps to build upon / as a start (pseudo code):

Code:
//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


Last edited by Reconnoiter; 11/01/16 19:54.