Sorry, here is some source code...
`Program: Editor
`Date: 9-9-03
`Modified: 10-4-03
`Programmed with DarkBasic Professional 5.0
`
sync on : sync rate 0 : autocam off : randomize timer()
dim objects(200,10)
global numobjects
global objptr
global gridsize=20
global tracksizex=8
global tracksizez=16
global trackwidth=2
global tilesize=100
global halftile=tilesize/2
global gridx
global gridy
global gridz
global camx
global camy
global camz
global campointy
Make matrix 2,gridsize*tilesize,gridsize*tilesize,gridsize,gridsize
set camera range 1,10000
update matrix 2
WHITE=rgb(255,255,255)
ink WHITE,0
`--------------------------
camx=(gridsize*tilesize)/2
camy=1700
camz=-100
campointy=-1800
gridx=1
gridz=1
position camera camx,camy,camz
point camera camx,campointy,2000
make object box 1,tilesize,tilesize,tilesize
objx=gridx*tilesize-(tilesize/2)
objy=tilesize/2
objz=gridz*tilesize-(tilesize/2)
position object 1,objx,objy,objz
`objects(x,1)=3D X, (,2)=3D Y, (,3)=3D Xmin, (,4)=3D Ymin, (,5)=3D Xmax, (,6)=3D Ymax, (,7)=2D X, (,8)=3D Y
objects(1,3)=100
objects(1,4)=200
objects(1,5)=100+tilesize
objects(1,6)=200+tilesize
numobjects=1
cameraflag=1
objcolor=rgb(rnd(100)+155,rnd(100)+155,rnd(100)+155)
ink objcolor,0
color object 1,objcolor
oldmx=mousex()
oldmz=mousey()
make object sphere 100,10
do
p=pick object(mousex(),mousey(),1,20)
set cursor 0,0
if p=3
print "You are not pointing at any object"
hide object 100
else
pd#=get pick distance()
print "You are pointing at object: ";p
print "Distance from camera: ";pd#
px#=get pick vector x()
py#=get pick vector y()
pz#=get pick vector z()
wx#=px#+camera position x()
wy#=py#+camera position y()
wz#=pz#+camera position z()
print "Relative to Camera: X = ";px#
print "Relative to Camera: Y = ";py#
print "Relative to Camera: Z = ";pz#
print "World: X = ";wx#
print "World: Y = ";wy#
print "World: Z = ";wz#
show object 100
position object 100,wx#,wy#,wz#
endif
if mouseclick()=1
newmx=mousex()
newmz=mousey()
print "MouseClick=1"
print "newmx=";newmx
print "objx=";objx
objptr=p
if objptr>0
if newmx>objx then objx=objx+10
if newmx<objx then objx=objx-10
position object 1,objx,objy,objz
` if newmx>(oldmx+20) then if gridx<gridsize then inc gridx,1:oldmx=newmx
` if newmx<(oldmx-20) then dec gridx,1:oldmx=newmx
` if newmz<(oldmz-20) then if gridz<gridsize then inc gridz,1:oldmz=newmz
` if newmz>(oldmz+20) then if gridz>1 then dec gridz,1:oldmz=newmz
` objx=gridx*tilesize-halftile
` objy=halftile
` objz=gridz*tilesize-halftile
` position object 1,objx,objy,objz
endif
else
oldmx=mousex()
oldmz=mousey()
` if objptr=0 then pickflag=0
endif
sync
loop