You're asking me?
You want tile-based movement, but you've got no tile?
C'mon man, keep it real....

Serious now.
I assumed your 'ground' was going to me made up of tiles,
and I think that was a sensible assumption on my part.
But if there is no 'actual' tiles, then we 'fake' them instead,
no need to create invisible tiles.
My sense of scale may be wrong here, it depends on your terrain sizes
and model sizes, so bear with me. Im basing this on the visual look of the video.
Lets say your player is 20 quants tall. The tiles look to be about half that.
SO player = 20 quants tall, tiles = 10 quants long/wide.
So to achieve our tile-like movements, we will make our fake tile positions
to be the 'corner' of each tile. (This simplifies the later calculations)
So from now on, whenever we have a target XY position of any sort, be it
a destination, a portal point, a dropped object, or whatever,
we need to "round-off" is position to that of a tile-corner.
In this example, to the nearest multiple of 10.
So lets say the mouse clicks at XY position 123,47
Your target position wants to be "rounded off" like so,
target.x = integer(target.x/10+0.5)*10;
target.y = integer(target.y/10+0.5)*10;
So our target position is now 120,50.
See how this is "faking" a tile position?
So if every position in the game is 'rounded' like this
then it will appear tile-like.