Advertisement
Guest User

Untitled

a guest
Apr 24th, 2016
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // Project: ProjectZ
  3. // Created: 2016-04-22
  4. // set window properties
  5. SetWindowTitle( "ProjectZ" )
  6. SetWindowSize( 1024,683, 0 )
  7. // set display properties
  8. SetVirtualResolution( 1024, 683 )
  9. SetOrientationAllowed( 1, 1, 1, 1 )
  10. SetScissor(0,0,0,0)
  11. setsyncrate(60,0)
  12. Create3DPhysicsWorld()
  13. Set3DPhysicsGravity(0,-0.27,0)
  14. #include "keys.agc"
  15. #constant maxobjects = 5000
  16. type Tobjects
  17.     name$ as string
  18.     sx# as float
  19.     sy# as float
  20.     sz# as float
  21.     cx# as float
  22.     cy# as float
  23.     cz# as float
  24.     objID as integer
  25.     image as integer
  26.     physhape as integer
  27.     phybody as integer
  28.     shape as integer
  29.     transparency as integer
  30.     selecttodelete as integer
  31.     oldimage as integer
  32.     red as integer
  33.     green as integer
  34.     blue as integer
  35. endtype
  36. dim Tobject[maxobjects] as Tobjects
  37. dim deleted[maxobjects]
  38. global found=0
  39. global level=1
  40. global quit=0
  41. global cursorobject=7000
  42. global cx#=0
  43. global cy#=0
  44. global cz#=0
  45. global objectnumber=1
  46. global currenttexture=1
  47. global FrameTime#
  48. global CameraDistance#  =   8
  49. global gridx#           =   0.5
  50. global gridz#           =   0.5
  51. global gridy#           =   0.5
  52. global sx#=1
  53. global sy#=1
  54. global sz#=1
  55. global phybody=1
  56. global physhape=0
  57. global shape=0
  58. global obj              =   0
  59. global objectsselected  =   0
  60. global object1          =   0
  61. global object2          =   0
  62. global red=255
  63. global green=255
  64. global blue=255
  65. global myname$=""
  66. load_images()
  67. Init()
  68. Repeat
  69.     control()
  70.     FrameTime#=GetFrameTime()
  71.     //Print( ScreenFPS() )
  72.     if GetPointerPressed()=1
  73.         PointerStartX#=GetPointerX()
  74.         PointerStartY#=GetPointerY()
  75.     endif
  76.     if GetPointerState()=1
  77.         PointerX#=GetPointerX()
  78.         PointerY#=GetPointerY()
  79.         //calculate the distance the pointer traveled while pressing
  80.         PointerDistX#=PointerX#-PointerStartX#
  81.         PointerDistY#=PointerY#-PointerStartY#
  82.         // here we calculate if we swipe vertically or horizontally
  83.         if abs(PointerDistX#)>abs(PointerDistY#)
  84.         // change the camera angle in dependence of the frametime
  85.             CameraAngleY#=CameraAngleY#-PointerDistX#*1.5*FrameTime#
  86.             else
  87.                 // change the camera distance in dependence of the frametime
  88.                 CameraDistance#=CameraDistance#-PointerDistY#*0.1*FrameTime#
  89.         endif
  90.     endif
  91.     //sin and cos of the camera angle
  92.     Sin#=sin(CameraAngleY#)
  93.     Cos#=cos(CameraAngleY#)
  94.     // calculate the camera position, with curvevalue for the smooth movement
  95.     CameraX#=curvevalue(sin(CameraAngleY#),CameraX#,3)
  96.     CameraZ#=curvevalue(cos(CameraAngleY#),CameraZ#,3)
  97.     setcameraposition(1,cx#+CameraDistance#*0.6*CameraX#,cy#+CameraDistance#,cz#+CameraDistance#*0.6*CameraZ#)
  98.     setcameralookat(1,cx#,cy#,cz#,0)
  99.     setobjectposition(cursorobject,cx#,cy#,cz#)
  100.     Sync()
  101. Until quit=1
  102. function control()
  103.     oldxpos#=getobjectx(cursorobject)
  104.     oldypos#=getobjecty(cursorobject)
  105.     oldzpos#=getobjectz(cursorobject)
  106.     if getrawkeypressed(KEY_Q)
  107.         quit=1
  108.     endif
  109.     if getrawkeypressed(KEY_L)
  110.         load_model(currenttexture)
  111.     endif
  112.     if getrawkeypressed(KEY_DELETE)
  113.         for n=1 to maxobjects
  114.             if Tobject[n].selecttodelete=1
  115.                 deleted[n]=Tobject[n].objID
  116.                  Tobject[n].selecttodelete=0
  117.                  deleteobject(Tobject[n].objID)
  118.                  reset_object(Tobject[n].objID)
  119.             endif
  120.         next
  121.     endif
  122.     if getrawkeypressed(KEY_C)
  123.         clear_level()
  124.     endif
  125.     if getrawkeypressed(KEY_A)
  126.         cy#=cy#+gridy#
  127.     endif
  128.     if getrawkeypressed(KEY_Z)
  129.         cy#=cy#-gridy#
  130.     endif
  131.     if getrawkeypressed(KEY_LEFT)
  132.         cx#=cx#+gridx#
  133.     endif
  134.     if getrawkeypressed(KEY_RIGHT)
  135.         cx#=cx#-gridx#
  136.     endif
  137.     if getrawkeypressed(KEY_UP)
  138.         cz#=cz#-gridz#
  139.     endif
  140.     if getrawkeypressed(KEY_DOWN)
  141.         cz#=cz#+gridz#
  142.     endif
  143.     if getrawkeypressed(KEY_P)
  144.         inc phybody
  145.         if phybody>2
  146.             phybody=1
  147.         endif
  148.     endif
  149.     if getrawkeypressed(KEY_S)
  150.         inc physhape
  151.         if physhape>1
  152.             physhape=0
  153.         endif
  154.     endif  
  155.     if getrawkeypressed(KEY_T)
  156.         save(level)
  157.         hide_stuff()
  158.         test_level()
  159.         show_stuff()
  160.     endif      
  161.     if getrawkeyreleased(KEY_SPACE)
  162.         for n=1 to maxobjects
  163.             if deleted[n]>0
  164.                 oldnumber=objectnumber
  165.                 objectnumber=deleted[n]
  166.                  reset_object(objectnumber)
  167.                 deleted[n]=0
  168.                 found=1
  169.                 exit
  170.             endif
  171.         next
  172.         select shape
  173.             case 0
  174.                 createobjectbox(objectnumber,sx#,sy#,sz#)
  175.                 setobjectposition(objectnumber,cx#,cy#,cz#)
  176.                 setobjectimage(objectnumber,currenttexture,0)
  177.                 SetObjectUVScale(objectnumber, 0, sx#, sz# )
  178.                 setobjectcolor(objectnumber,red,green,blue,255)
  179.             endcase
  180.             case 1
  181.                 createobjectsphere(objectnumber,1,16,16)
  182.                 setobjectposition(objectnumber,cx#,cy#,cz#)
  183.                 setobjectimage(objectnumber,currenttexture,0)
  184.                 setobjectcolor(objectnumber,red,green,blue,255)
  185.             endcase
  186.         endselect
  187.         set_value(objectnumber)
  188.         if found=1
  189.             objectnumber=oldnumber
  190.         endif
  191.         if found=0
  192.         inc objectnumber
  193.         endif
  194.         found=0
  195.     endif
  196.     if GetRawKeyReleased(KEY_SHIFT)
  197.         caster(oldxpos#,oldypos#,oldzpos#)
  198.         if obj>0 and obj <> cursorobject
  199.             inc objectsselected
  200.             if objectsselected=1
  201.                 object1=obj
  202.             endif
  203.             if objectsselected=2
  204.                 object2=obj
  205.             endif
  206.             Tobject[obj].oldimage=Tobject[obj].image
  207.             oldred=Tobject[obj].red
  208.             oldgreen=Tobject[obj].green
  209.             oldblue=Tobject[obj].blue
  210.             select Tobject[obj].selecttodelete
  211.                 case 0
  212.                     setobjectcolor(obj,255,255,0,255)
  213.                     `setobjectimage(obj,22,0)
  214.                     Tobject[obj].selecttodelete=1
  215.                     SetObjectTransparency(obj,1)
  216.                 endcase
  217.                 case 1
  218.                     setobjectcolor(obj,oldred,oldgreen,oldblue,255)
  219.                     Tobject[obj].selecttodelete=0
  220.                     dec objectsselected
  221.                     `setobjectimage(obj,myobject[obj].oldimage,0)
  222.                     Tobject[obj].oldimage=0
  223.                     SetObjectTransparency(obj,0)
  224.                 endcase
  225.             endselect
  226.         endif          
  227.     endif
  228.     if getrawkeypressed(KEY_SLASH)
  229.         inc currenttexture
  230.         setspriteimage(1,currenttexture)
  231.     endif
  232.     if getrawkeypressed(KEY_PERIOD)
  233.         dec currenttexture
  234.         setspriteimage(1,currenttexture)
  235.     endif
  236.     if getrawkeypressed(KEY_H)
  237.         sx#=sx#+1
  238.         deleteobject(cursorobject)
  239.         createobjectbox(cursorobject,sx#,sy#,sz#)
  240.         setobjectposition(cursorobject,cx#,cy#,cz#)
  241.         setobjectcolor(cursorobject,0,100,0,100)
  242.         SetObjectTransparency(cursorobject,1)
  243.     endif
  244.     if getrawkeypressed(KEY_G)
  245.         sx#=sx#-1
  246.         deleteobject(cursorobject)
  247.         createobjectbox(cursorobject,sx#,sy#,sz#)
  248.         setobjectposition(cursorobject,cx#,cy#,cz#)
  249.         setobjectcolor(cursorobject,0,100,0,100)
  250.         SetObjectTransparency(cursorobject,1)
  251.     endif
  252.     if getrawkeypressed(KEY_F2)
  253.         save(level)
  254.     endif
  255.     if getrawkeypressed(KEY_F1)
  256.         load(level)
  257.     endif
  258.     read_boxes()
  259. endfunction
  260. function set_value(ob)
  261.     Tobject[ob].name$ = myname$
  262.     Tobject[ob].objID=objectnumber
  263.     Tobject[ob].phybody=phybody
  264.     Tobject[ob].physhape=physhape
  265.     Tobject[ob].shape=shape
  266.     Tobject[ob].image=currenttexture
  267.     Tobject[ob].red=red
  268.     Tobject[ob].green=green
  269.     Tobject[ob].blue=blue
  270.     Tobject[ob].cx#=cx#
  271.     Tobject[ob].cy#=cy#
  272.     Tobject[ob].cz#=cz#
  273.     Tobject[ob].sx#=sx#
  274.     Tobject[ob].sy#=sy#
  275.     Tobject[ob].sz#=sz#
  276. endfunction
  277. function cameracontrol(xpos#,ypos#,zpos#)
  278.     if GetPointerPressed()=1
  279.         PointerStartX#=GetPointerX()
  280.         PointerStartY#=GetPointerY()
  281.     endif
  282.     if GetPointerState()=1
  283.         PointerX#=GetPointerX()
  284.         PointerY#=GetPointerY()
  285.         //calculate the distance the pointer traveled while pressing
  286.         PointerDistX#=PointerX#-PointerStartX#
  287.         PointerDistY#=PointerY#-PointerStartY#
  288.         // here we calculate if we swipe vertically or horizontally
  289.         if abs(PointerDistX#)>abs(PointerDistY#)
  290.         // change the camera angle in dependence of the frametime
  291.             CameraAngleY#=CameraAngleY#-PointerDistX#*1.5*FrameTime#
  292.             else
  293.                 // change the camera distance in dependence of the frametime
  294.                 CameraDistance#=CameraDistance#-PointerDistY#*0.1*FrameTime#
  295.         endif
  296.     endif
  297.     //sin and cos of the camera angle
  298.     Sin#=sin(CameraAngleY#)
  299.     Cos#=cos(CameraAngleY#)
  300.     // calculate the camera position, with curvevalue for the smooth movement
  301.     CameraX#=curvevalue(sin(CameraAngleY#),CameraX#,3)
  302.     CameraZ#=curvevalue(cos(CameraAngleY#),CameraZ#,3)
  303.     setcameraposition(1,xpos#+CameraDistance#*0.6*CameraX#,ypos#+CameraDistance#,zpos#+CameraDistance#*0.6*CameraZ#)
  304.     setcameralookat(1,xpos#,ypos#,zpos#,0)
  305. endfunction
  306. Function Init()
  307.     setclearcolor(60,0,0)
  308.     create_my_editbox(1,240,20,2,255,0,0,0,30,18,255,"1")  //phybody#
  309.     create_my_editbox(2,240,50,2,255,0,0,0,30,18,255,"0")  //physhape#
  310.     create_my_editbox(3,240,80,2,255,0,0,0,30,18,255,"1.0")  //sizex#
  311.     create_my_editbox(4,240,110,2,255,0,0,0,30,18,255,"1.0") //sizey#
  312.     create_my_editbox(5,240,140,2,255,0,0,0,30,18,255,"1.0") //sizez#
  313.    
  314.     create_my_editbox(6,460,20,2,255,0,0,0,30,18,255,"255")
  315.     create_my_editbox(7,460,50,2,255,0,0,0,30,18,255,"255")
  316.     create_my_editbox(8,460,80,2,255,0,0,0,30,18,255,"255")
  317.    
  318.     create_my_text(1,38,18,25,255,0,0,"PhyBody --- ",0)
  319.     create_my_text(2,38,48,25,255,0,0,"PhyShape--- ",0)
  320.     create_my_text(3,38,78,25,255,0,0,"SizeX# --- ",0)
  321.     create_my_text(4,38,108,25,255,0,0,"SizeY# --- ",0)
  322.     create_my_text(5,38,138,25,255,0,0,"SizeZ# --- ",0)
  323.     createobjectbox(cursorobject,sx#,sy#,sz#)
  324.     setobjectposition(cursorobject,cx#,cy#,cz#)
  325.     setobjectcolor(cursorobject,0,100,0,100)
  326.     SetObjectTransparency(cursorobject,1)
  327.     createsprite(1,currenttexture)
  328.     setspritesize(1,128,128)
  329.     setspriteposition(1,900,550)       
  330. endfunction
  331. function create_my_editbox(number,x#,y#,bordersize#,r,g,b,backcolor,bsizex#,bsizey#,alpha,box$)
  332.     createeditbox(number)
  333.     SetEditBoxBorderSize(number,bordersize#)
  334.     SetEditBoxTextColor(number,r,g,b)
  335.     SetEditBoxBorderColor(number,r,g,b,alpha)
  336.     SetEditBoxBackgroundColor( number, 0, 0, 0, alpha )
  337.     seteditboxsize(number,bsizex#,bsizey#)
  338.     SetEditBoxPosition(number,x#,y#)
  339.     FixEditBoxToScreen(number,1)
  340.     seteditboxdepth(number,0)
  341.     SetEditBoxText(number,box$)
  342. endfunction
  343. function create_my_text(number,x#,y#,size,r,g,b,mystring$,depth)
  344.     createtext(number,mystring$)
  345.     settextsize(number,size)
  346.     settextcolor(number,r,b,g,255)
  347.     SetTextPosition(number,x#,y#)
  348.     FixTextToScreen(number,1)
  349.     settextdepth(number,depth)
  350.     //SetTextFontImage ( number, 2 )
  351. endfunction
  352. function curvevalue(Destination#,Current#,Smooth#)
  353.     Current#=Current#+((Destination#-Current#)/Smooth#)
  354. endfunction Current#
  355. function PI()
  356. endfunction 3.14159265
  357. function set_physics(objectnumber,phyb,phys)
  358.     select phyb
  359.         case 1
  360.             Create3DPhysicsstaticBody(objectnumber)
  361.         endcase
  362.         case 2
  363.             Create3DPhysicsdynamicBody(objectnumber)
  364.         endcase
  365.     endselect
  366.     select phys
  367.         case 0
  368.             SetObjectShapebox(objectnumber)
  369.         endcase
  370.         case 1
  371.             SetObjectShapeSphere(objectnumber)
  372.         endcase
  373.     endselect
  374. endfunction
  375. function load_images()
  376.     for n=1 to 100
  377.         f$=str(n) + ".png"
  378.         if getfileexists(f$)
  379.             loadimage (n,f$)
  380.             SetImageWrapU(n,sx#/1.0)
  381.             SetImageWrapV(n,sy#/1.0)
  382.         endif
  383.     next
  384. endfunction
  385. Function Test_level()
  386.     for n=1 to 5000
  387.         if Tobject[n].objID>0
  388.             set_physics(n,Tobject[n].phybody,Tobject[n].physhape)
  389.         endif
  390.     next n
  391.     Repeat
  392.         if getrawkeypressed(KEY_E)
  393.             quit=1
  394.         endif
  395.         Step3DPhysicsWorld()
  396.         sync()
  397.     until quit=1
  398.     quit=0
  399.     clear_physics()
  400.     reset_object_positions()
  401. endfunction
  402. function clear_physics()
  403.     for n=1 to maxobjects
  404.         if getobjectexists(n)
  405.             delete3dphysicsbody(n)
  406.         endif
  407.        
  408.     next n
  409.     //Delete3DPhysicsCharacterController(player)
  410. endfunction
  411. function reset_object_positions()
  412.     for n=1 to maxobjects
  413.         if Tobject[n].objID>0
  414.             setobjectposition(n,Tobject[n].cx#,Tobject[n].cy#,Tobject[n].cz#)
  415.             setobjectrotation(n,0,0,0)
  416.         endif
  417.     next n
  418. endfunction
  419. Function Save(level)
  420.     f$=""
  421.     f$="levelR"
  422.     f$=f$+str(level)
  423.     f$=f$+".lev"
  424.     myfile=opentowrite(f$,0)
  425.     for n=1 to maxobjects
  426.         writestring(myfile,Tobject[n].name$)
  427.         writeinteger(myfile,Tobject[n].objID)
  428.         writeinteger(myfile,Tobject[n].image)
  429.         writeinteger(myfile,Tobject[n].phybody)
  430.         writeinteger(myfile,Tobject[n].physhape)
  431.         writeinteger(myfile,Tobject[n].shape)
  432.         writeinteger(myfile,Tobject[n].transparency)
  433.         writeinteger(myfile,Tobject[n].red)
  434.         writeinteger(myfile,Tobject[n].green)
  435.         writeinteger(myfile,Tobject[n].blue)
  436.         writeinteger(myfile,deleted[n])
  437.         writefloat(myfile,Tobject[n].cx#)
  438.         writefloat(myfile,Tobject[n].cy#)
  439.         writefloat(myfile,Tobject[n].cz#)
  440.         writefloat(myfile,Tobject[n].sx#)
  441.         writefloat(myfile,Tobject[n].sy#)
  442.         writefloat(myfile,Tobject[n].sz#)
  443.     next n
  444.     closefile(myfile)
  445. endfunction
  446. Function load(level)
  447.     clear_level()
  448.     f$=""
  449.     f$="levelR"
  450.     f$=f$+str(level)
  451.     f$=f$+".lev"
  452.     myfile=opentoread(f$)
  453.     for n=1 to maxobjects
  454.         Tobject[n].name$=readstring(myfile)
  455.         Tobject[n].objID =readinteger(myfile)
  456.         Tobject[n].image=readinteger(myfile)
  457.         Tobject[n].phybody=readinteger(myfile)
  458.         Tobject[n].physhape=readinteger(myfile)
  459.         Tobject[n].shape=readinteger(myfile)
  460.         Tobject[n].transparency=readinteger(myfile)
  461.         Tobject[n].red=readinteger(myfile)
  462.         Tobject[n].green=readinteger(myfile)
  463.         Tobject[n].blue=readinteger(myfile)
  464.         deleted[n]=readinteger(myfile)
  465.         Tobject[n].cx#=readfloat(myfile)
  466.         Tobject[n].cy#=readfloat(myfile)
  467.         Tobject[n].cz#=readfloat(myfile)
  468.         Tobject[n].sx#=readfloat(myfile)
  469.         Tobject[n].sy#=readfloat(myfile)
  470.         Tobject[n].sz#=readfloat(myfile)
  471.         if Tobject[n].objID>0
  472.             if Tobject[n].name$=""
  473.                 select Tobject[n].shape
  474.                     case 0 
  475.                         createobjectbox(Tobject[n].objID,Tobject[n].sx#,Tobject[n].sy#,Tobject[n].sz#)
  476.                         setobjectposition(Tobject[n].objID,Tobject[n].cx#,Tobject[n].cy#,Tobject[n].cz#)
  477.                         setobjectimage(Tobject[n].objID,Tobject[n].image,0)
  478.                         SetObjectUVScale(Tobject[n].objID, 0, Tobject[n].sx#, Tobject[n].sz#)
  479.                         SetObjectTransparency(Tobject[n].objID,Tobject[n].transparency)
  480.                         SetObjectcolor(Tobject[n].objID,Tobject[n].red,Tobject[n].green,Tobject[n].blue,255)
  481.                     endcase
  482.                     case 1
  483.                         createobjectsphere(Tobject[n].objID,1,16,16)
  484.                         setobjectposition(Tobject[n].objID,Tobject[n].cx#,Tobject[n].cy#,Tobject[n].cz#)
  485.                         setobjectimage(Tobject[n].objID,Tobject[n].image,0)
  486.                         setobjectcolor(Tobject[n].objID,Tobject[n].red,Tobject[n].green,Tobject[n].blue,255)
  487.                     endcase
  488.                 endselect
  489.             endif
  490.             if Tobject[n].name$<>""
  491.                 loadobject(Tobject[n].objID,Tobject[n].name$)
  492.                 setobjectposition(Tobject[n].objID,Tobject[n].cx#,Tobject[n].cy#,Tobject[n].cz#)
  493.                 setobjectimage(Tobject[n].objID,Tobject[n].image,0)
  494.                 setobjectcolor(Tobject[n].objID,Tobject[n].red,Tobject[n].green,Tobject[n].blue,255)
  495.                        
  496.             endif      
  497.         endif
  498.     next n
  499.     closefile(myfile)
  500.     for n=1 to maxobjects
  501.         if objectnumber<=Tobject[n].objID
  502.             objectnumber=Tobject[n].objID+1
  503.         endif
  504.     next n
  505. endfunction
  506. Function read_boxes()
  507.     if getrawkeypressed(KEY_ENTER)
  508.         repeat
  509.             focus=GetCurrentEditBox()
  510.             select focus
  511.                 case 1
  512.                     t$=geteditboxtext(1)
  513.                     t=val(t$)
  514.                     phybody=t
  515.                 endcase
  516.                 case 2
  517.                     t$=geteditboxtext(2)
  518.                     t=val(t$)
  519.                     physhape=t
  520.                 endcase
  521.                 case 3
  522.                     t$=geteditboxtext(3)
  523.                     t#=valfloat(t$)
  524.                     sx#=t#
  525.                     redo_cursor(sx#,sy#,sz#)
  526.                 endcase
  527.                 case 4
  528.                     t$=geteditboxtext(4)
  529.                     t#=valfloat(t$)
  530.                     sy#=t#
  531.                     redo_cursor(sx#,sy#,sz#)
  532.                 endcase
  533.                 case 5
  534.                     t$=geteditboxtext(5)
  535.                     t#=valfloat(t$)
  536.                     sz#=t#
  537.                     redo_cursor(sx#,sy#,sz#)
  538.                 endcase
  539.                 case 6
  540.                     t$=geteditboxtext(6)
  541.                     t=val(t$)
  542.                     red=t
  543.                     setspritecolor(1,red,green,blue,255)
  544.                 endcase
  545.                 case 7
  546.                     t$=geteditboxtext(7)
  547.                     t=val(t$)
  548.                     green=t
  549.                     setspritecolor(1,red,green,blue,255)
  550.                 endcase
  551.                 case 8
  552.                     t$=geteditboxtext(8)
  553.                     t=val(t$)
  554.                     blue=t
  555.                     setspritecolor(1,red,green,blue,255)
  556.                 endcase            
  557.             endselect
  558.             sync()
  559.         until GetRawKeyReleased(KEY_ENTER)
  560.     endif
  561. endfunction
  562. function redo_cursor(sizex#,sizey#,sizez#)
  563.     deleteobject(cursorobject)
  564.     createobjectbox(cursorobject,sizex#,sizey#,sizez#)
  565.     setobjectposition(cursorobject,cx#,cy#,cz#)
  566.     setobjectcolor(cursorobject,0,100,0,100)
  567.     SetObjectTransparency(cursorobject,1)
  568. endfunction
  569. function show_stuff()
  570.     for n=1 to 1000
  571.         if gettextexists(n)
  572.             SetTextVisible(n,1)
  573.         endif
  574.         if GetEditBoxExists(n)
  575.             SetEditBoxVisible(n,1)
  576.         endif
  577.     next n
  578.     SetSpriteVisible(1,1)
  579.     sync()
  580. endfunction
  581. function hide_stuff()
  582.     for n=1 to 1000
  583.         if gettextexists(n)
  584.             SetTextVisible(n,0)
  585.         endif
  586.         if GetEditBoxExists(n)
  587.             SetEditBoxVisible(n,0)
  588.         endif
  589.     next n
  590.     SetSpriteVisible(1,0)
  591.     sync()
  592. endfunction
  593. function clear_level()
  594.     for n=1 to maxobjects
  595.         if getobjectexists(n)
  596.             deleteobject(n)
  597.             Tobject[n].name$=""
  598.             Tobject[n].cz#=0
  599.             Tobject[n].cy#=0
  600.             Tobject[n].cx#=0
  601.             Tobject[n].phybody=0
  602.             Tobject[n].image=0
  603.             Tobject[n].objID=0
  604.             Tobject[n].physhape=0
  605.             Tobject[n].shape=0
  606.             Tobject[n].transparency=0
  607.             Tobject[n].red=0
  608.             Tobject[n].green=0
  609.             Tobject[n].blue=0
  610.             Tobject[n].sx#=0
  611.             Tobject[n].sy#=0
  612.             Tobject[n].sz#=0
  613.         endif
  614.     next n
  615.     objectnumber=1
  616.     sync()
  617. endfunction
  618. Function reset_object(obj)
  619.     Tobject[obj].name$=""
  620.     Tobject[obj].objID =0
  621.     Tobject[obj].image=0
  622.     Tobject[obj].phybody=0
  623.     Tobject[obj].physhape=0
  624.     Tobject[obj].shape=0
  625.     Tobject[obj].transparency=0
  626.     Tobject[obj].cx#=0
  627.     Tobject[obj].cy#=0
  628.     Tobject[obj].cz#=0
  629.     Tobject[obj].red=0
  630.     Tobject[obj].green=0
  631.     Tobject[obj].blue=0
  632.     Tobject[obj].sx#=0
  633.     Tobject[obj].sy#=0
  634.     Tobject[obj].sz#=0
  635. endfunction
  636. function caster(oldx#,oldy#,oldz#)
  637.     pobj = ObjectsphereCast(0,oldx#,oldy#,oldz#,cx#,cy#,cz#,0.5)
  638.     if pobj>0
  639.         obj=GetObjectRayCastHitID(0)
  640.     endif
  641. endfunction obj
  642. function load_model(currenttexture)
  643.     for n=1 to maxobjects
  644.             if deleted[n]>0
  645.                 oldnumber=objectnumber
  646.                 objectnumber=deleted[n]
  647.                 deleted[n]=0
  648.                 found=1
  649.                 exit
  650.             endif
  651.         next
  652.     model$=ChooseRawFile("*.obj")
  653.     if model$>""
  654.         myname$=model$
  655.         `myobject[objectnumber].name$=myname$
  656.         loadobject(objectnumber,model$)
  657.         set_value(objectnumber)
  658.         repeat
  659.             If getrawkeypressed(KEY_E)
  660.                 quit=1
  661.             endif
  662.             if getrawkeypressed(KEY_LEFT)
  663.                 cx#=cx#+gridx#
  664.             endif
  665.             if getrawkeypressed(KEY_RIGHT)
  666.                 cx#=cx#-gridx#
  667.             endif
  668.             if getrawkeypressed(KEY_UP)
  669.                 cz#=cz#-gridz#
  670.             endif
  671.             if getrawkeypressed(KEY_DOWN)
  672.                 cz#=cz#+gridz#
  673.             endif
  674.             if GetPointerPressed()=1
  675.                 PointerStartX#=GetPointerX()
  676.                 PointerStartY#=GetPointerY()
  677.             endif
  678.             if GetPointerState()=1
  679.                 PointerX#=GetPointerX()
  680.                 PointerY#=GetPointerY()
  681.                 //calculate the distance the pointer traveled while pressing
  682.                 PointerDistX#=PointerX#-PointerStartX#
  683.                 PointerDistY#=PointerY#-PointerStartY#
  684.                 // here we calculate if we swipe vertically or horizontally
  685.                 if abs(PointerDistX#)>abs(PointerDistY#)
  686.                     // change the camera angle in dependence of the frametime
  687.                     CameraAngleY#=CameraAngleY#-PointerDistX#*1.5*FrameTime#
  688.                 else
  689.                     // change the camera distance in dependence of the frametime
  690.                     CameraDistance#=CameraDistance#-PointerDistY#*0.1*FrameTime#
  691.                 endif
  692.             endif
  693.             //sin and cos of the camera angle
  694.             Sin#=sin(CameraAngleY#)
  695.             Cos#=cos(CameraAngleY#)
  696.             // calculate the camera position, with curvevalue for the smothe movement
  697.             CameraX#=curvevalue(sin(CameraAngleY#),CameraX#,3)
  698.             CameraZ#=curvevalue(cos(CameraAngleY#),CameraZ#,3)
  699.             setcameraposition(1,cx#+CameraDistance#*0.6*CameraX#,cy#+CameraDistance#,cz#+CameraDistance#*0.6*CameraZ#)
  700.             // set the camera to look at the balls position
  701.             setcameralookat(1,cx#,cy#,cz#,0)
  702.             setobjectposition(objectnumber,cx#,cy#,cz#)
  703.             setobjectposition(cursorobject,cx#,cy#,cz#)
  704.             sync()
  705.         until quit=1
  706.         if found=1
  707.             objectnumber=oldnumber
  708.         endif
  709.         if found=0
  710.         inc objectnumber
  711.         endif
  712.         found=0
  713.         quit=0
  714.     endif
  715. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement