"c_move" interact with everything, to interact with terrains you simply need to do this:
dist.x = 10 * (key_w - key_s) * time_step;
dist.y = 10 * (key_a - key_d) * time_step;
dist.z = 10 * (key_q - key_e) * time_step;
c_move(my,dist,nullvector,IGNORE_PASSABLE|GLIDE);
So you can move player with WSAD in X and Y coordinates, plus with QE in Z.
Take a look at your "c_move", may be you are using "IGNORE_WORLD" in it.
Or may be "IGNORE_FLAG2" and you terrain has FLAG2 set on... I can't see any other reasons.