moveobj is not the way, i have made it as smooth while keeping the flexebility to change the velocity and etc each frame
way i made some throwing stuff(its secret atm)
just store velocity and grav velocity, and onclientrender get time elapsed since last frame, add gravity velocity, multiply it with time, add up current pos with velocity, check line of sight, and if its clear set new pos, if its not, use the hit pos and normal do collide, etc. you can change rotation similarly as well. all you need is mayor physics formula knowledge.
this works well and synced, but there is very slight desync possibility if the fps varies much, but tis basically tipical way how it all works in game.
btw we also have getElementColShape(no idea how accurate it is)