home *** CD-ROM | disk | FTP | other *** search
/ DarkBasic Professional / DarkBasicPro.iso / data1.cab / Lang_Files_(English) / Help / examples / basic3d / basic3d9-example.dba < prev    next >
Encoding:
Text File  |  2004-09-22  |  2.2 KB  |  99 lines

  1. Rem Pick Object
  2. Rem Created: 14/07/2003 18:54:11
  3.  
  4. rem Init app
  5. sync on : sync rate 60
  6.  
  7. rem Make floor
  8. make object plain 1,300,300
  9. position object 1,0,-50,0
  10. xrotate object 1,270
  11.  
  12. rem Make object to drag
  13. make object cube 2,100
  14. set shadow shading on 2
  15.  
  16. rem Setup camera and light
  17. set point light 0,-100,500,-100
  18. position camera -200,0,-200
  19. point camera 0,0,0
  20.  
  21. rem main loop
  22. do
  23.  
  24. rem Call drag subroutine
  25. gosub _drag_object
  26.  
  27. rem User prompt
  28. center text 320,20,"CLICK AND HOLD OBJECT TO DRAG - RIGHT BUTTON TO ROTATE"
  29.  
  30. rem Update screen
  31. sync
  32.  
  33. rem End loop
  34. loop
  35.  
  36.  
  37. _drag_object:
  38.  
  39. if mouseclick()=0 then pickmode=0 : cursorobj=0
  40. mclick=mouseclick()
  41. if mclick>0
  42.  if pickmode=0
  43.   cursorobj=pick object(mousex(),mousey(),2,2)
  44.   if cursorobj>0
  45.    pickmode=mclick
  46.    pickdistance#=get pick distance()
  47.    pickfromx#=get pick vector x()
  48.    pickfromy#=get pick vector y()
  49.    pickfromz#=get pick vector z()
  50.    if pickmode=1
  51.     objx#=object position x(cursorobj)
  52.     objy#=object position y(cursorobj)
  53.     objz#=object position z(cursorobj)
  54.    else
  55.     objx#=object angle x(cursorobj)
  56.     objy#=object angle y(cursorobj)
  57.     objz#=object angle z(cursorobj)
  58.     pickdiffx#=mousemovey() : pickdiffx#=0
  59.     pickdiffy#=mousemovex() : pickdiffy#=0
  60.    endif
  61.   else
  62.    highlightobj=0
  63.   endif
  64.  endif
  65.  if pickmode>0
  66.   if pickmode=1
  67.    pick screen mousex(),mousey(),pickdistance#
  68.    picktox#=get pick vector x()
  69.    picktoy#=get pick vector y()
  70.    picktoz#=get pick vector z()
  71.    pickdiffx#=picktox#-pickfromx#
  72.    pickdiffy#=picktoy#-pickfromy#
  73.    pickdiffz#=picktoz#-pickfromz#
  74.    grid=0
  75.    if grid=1
  76.     pickdiffx#=int(pickdiffx#/5)*5
  77.     pickdiffy#=int(pickdiffy#/5)*5
  78.     pickdiffz#=int(pickdiffz#/5)*5
  79.    endif
  80.    position object cursorobj,objx#+pickdiffx#,objy#+pickdiffy#,objz#+pickdiffz#
  81.   else
  82.    pickdiffx#=pickdiffx#+mousemovey()
  83.    pickdiffy#=pickdiffy#+mousemovex()
  84.    grid=0
  85.    if grid=1
  86.     tpickdiffx#=int(pickdiffx#/22.5)*22.5
  87.     tpickdiffy#=int(pickdiffy#/22.5)*22.5
  88.    else
  89.     tpickdiffx#=pickdiffx#
  90.     tpickdiffy#=pickdiffy#
  91.    endif
  92.    rotate object cursorobj,wrapvalue(objx#-tpickdiffx#),wrapvalue(objy#-tpickdiffy#),objz#
  93.   endif
  94.  endif
  95. endif
  96.  
  97. return
  98.  
  99.