Hey guys!
How can I change the code below so that the cube object snaps to the matrix(like grid points).
Any help would be apreciated.


Rem ***** Included Source File *****
Sync On : Sync Rate 0 : Backdrop On :Autocam Off
//Need a floor until the editor is fixed
Make Matrix 1,1000,1000,25,25
left = 0 : Top = 0 : Right = 120: Bottom = Right
Box left,Top,Right,Bottom,Rgb(0,0,0),Rgb(0,0,0),Rgb(0,0,0),Rgb(0,0,0)
Box left+2,Top+2,Right-8,Bottom-8,Rgb(255,255,255),Rgb(255,255,255),Rgb(255,255,255),Rgb(255,255,255)
Get Image 1,left,Top,Right,Bottom
Prepare Matrix Texture 1,1,1,1
`Set matrix
Update Matrix 1
Make Object cube 2,100
activeobject = 2
Do
text 100,100,"Object position:"+str$(object position y(2))
Gosub _drag_object
//Camera for tower defence
Tower_Defence_Cam()
Sync
Loop
Function Tower_Defence_Cam()
//Move cmaera using arrowkeys
Cmx = Camera Position X(): Cmz = Camera Position z()
If Keystate(203)=1 or mousex()<screen width()-screen width()+100 Then Dec Cmx,3
If Keystate(205)=1 or mousex()>screen width()-100 Then Inc Cmx,3
If Keystate(200)=1 or mousey()<screen height()-screen height()+100 Then Inc Cmz,3
If Keystate(208)=1 or mousey()>screen height()-100 Then Dec Cmz,3
text 0,0,str$(scancode())
//
Position Camera Cmx,800,Cmz
xrotate camera 60
Endfunction
_drag_object:
If activeobject>0
if mouseclick()=0 then pickmode=0 : cursorobj=0
mclick=mouseclick()
if mclick>0
if pickmode=0
cursorobj=pick object(mousex(),mousey(),activeobject,activeobject)
if cursorobj>0
pickmode=mclick
pickdistance#=get pick distance()
pickfromx#=get pick vector x()
pickfromy#=get pick vector y()
pickfromz#=get pick vector z()
if pickmode=1
objx#=object position x(cursorobj)
objy#=object position y(cursorobj)
objz#=object position z(cursorobj)
else
objx#=object angle x(cursorobj)
objy#=object angle y(cursorobj)
objz#=object angle z(cursorobj)
pickdiffx#=mousemovey() : pickdiffx#=0
pickdiffy#=mousemovex() : pickdiffy#=0
endif
else
highlightobj=0
endif
endif
if pickmode>0
if pickmode=1
pick screen mousex(),mousey(),pickdistance#
picktox#=get pick vector x()
picktoy#=get pick vector y()
picktoz#=get pick vector z()
pickdiffx#=picktox#-pickfromx#
pickdiffy#=picktoy#-pickfromy#
pickdiffz#=picktoz#-pickfromz#
grid=0
if grid=1
pickdiffx#=int(pickdiffx#/5)*5
pickdiffy#=int(pickdiffy#/5)*5
pickdiffz#=int(pickdiffz#/5)*5
endif
//position object cursorobj,objx#+pickdiffx#,objy#+pickdiffy#,objz#+pickdiffz#
//lockX = 1000/25 : lockZ = 1000/25
//POSIX = objx#+pickdiffx#/lockX: POSIZ = objz#+pickdiffz# / lockZ
position object cursorobj,objx#+pickdiffx#,-10,objz#+pickdiffz#
else
pickdiffx#=pickdiffx#+mousemovey()
pickdiffy#=pickdiffy#+mousemovex()
grid=0
if grid=1
tpickdiffx#=int(pickdiffx#/22.5)*22.5
tpickdiffy#=int(pickdiffy#/22.5)*22.5
else
tpickdiffx#=pickdiffx#
tpickdiffy#=pickdiffy#
endif
rotate object cursorobj,wrapvalue(objx#-tpickdiffx#),wrapvalue(objy#-tpickdiffy#),objz#
endif
endif
endif
Endif
return
Check out my website ->
Ameadus Project <- Free Project files, Examples and Over 2,000 textures