Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Project: Revival
- // Created: 2017-01-21
- // show all errors
- //SetErrorMode(2)
- // set window properties
- SetWindowTitle( "Revival" )
- SetWindowSize( 1024, 768, 0)
- // set display properties
- SetVirtualResolution( 1024, 768 )
- SetOrientationAllowed( 1, 1, 1, 1 )
- SetGenerateMipmaps(1)
- SetSyncRate( 60, 0 ) // 30fps instead of 60 to save battery
- // remove directional light, and reduce ambient
- SetAmbientColor( 255,255,255 )
- UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts
- Create3DPhysicsWorld()
- #include "keys.agc"
- #constant maxobjects=5000
- global name$=""
- global gametype=0
- global level=1
- global red=255
- global green=255
- global blue=255
- global gx#=20
- global rotyy#=0
- global gy#=20
- global gz#=20
- global basex#=0
- global basey#=10
- global bx#=40
- global by#=20
- global xgap#=180
- global xtextdiff#=0
- global baseboxX#=20
- global baseboxY#=20
- global ygap#=30
- global sizex#=20
- global sizey#=20
- global sizez#=20
- global groupeditbox=1
- global rededitbox=2
- global greeneditbox=3
- global blueeditbox=4
- global pbodyeditbox=5
- global pshapeeditbox=6
- global sizexeditbox=7
- global sizeyeditbox=8
- global sizezeditbox=9
- global shapeeditbox=10
- global gametypeeditbox=12
- global fpsreadout=300
- global cx#=0
- global sunmod=1
- global cy#=0
- global cz#=0
- global quit=0
- global shape=2
- global CameraDistance# = 130
- global currenttexture=6
- global group=0
- global lightnumber=1
- global rad#=20
- global objpointer=1
- global phybody=1
- global physhape=2
- global visibility=1
- global transparency=0
- global rotx=0
- global roty=0
- global rotz=0
- global friction#=0.8
- global flicker=0
- global cursorobject=8000
- global objectselected1=0
- global objectselected2=0
- global objectselectedcount=0
- type Tobject
- name$ as string
- x# as float
- y# as float
- z# as float
- sizex# as float
- sizey# as float
- sizez# as float
- group as integer
- ID as integer
- image as integer
- red as integer
- green as integer
- blue as integer
- shape as integer
- visible as integer
- selected as integer
- deleted as integer
- transparency as integer
- pb as integer
- ps as integer
- friction# as float
- rotatex as integer
- rotatey as integer
- rotatez as integer
- master as integer
- slave as integer
- endtype
- dim object[5000] as Tobject
- type Tlights
- x# as float
- y# as float
- z# as float
- ObjID as integer
- lightID as integer
- red as integer
- green as integer
- blue as integer
- flicker as integer
- deleted as integer
- selected as integer
- endtype
- dim light[5000] as Tlights
- load_images()
- init()
- repeat
- control()
- read_boxes()
- if getrawkeypressed(KEY_Q)
- quit=1
- endif
- FrameTime#=GetFrameTime()
- //Print( ScreenFPS() )
- if GetPointerPressed()=1
- PointerStartX#=GetPointerX()
- PointerStartY#=GetPointerY()
- endif
- if GetPointerState()=1
- PointerX#=GetPointerX()
- PointerY#=GetPointerY()
- //calculate the distance the pointer traveled while pressing
- PointerDistX#=PointerX#-PointerStartX#
- PointerDistY#=PointerY#-PointerStartY#
- // here we calculate if we swipe vertically or horizontally
- if abs(PointerDistX#)>abs(PointerDistY#)
- // change the camera angle in dependence of the frametime
- CameraAngleY#=CameraAngleY#-PointerDistX#*0.5*FrameTime#
- else
- // change the camera distance in dependence of the frametime
- CameraDistance#=CameraDistance#-PointerDistY#*0.1*FrameTime#
- endif
- endif
- setspriteangle(3,-CameraAngleY#)
- //sin and cos of the camera angle
- Sin#=sin(CameraAngleY#)
- Cos#=cos(CameraAngleY#)
- // calculate the camera position, with curvevalue for the smooth movement
- CameraX#=curvevalue(sin(CameraAngleY#),CameraX#,3)
- CameraZ#=curvevalue(cos(CameraAngleY#),CameraZ#,3)
- setobjectposition(cursorobject,cx#,cy#,cz#)
- setcameraposition(1,cx#+CameraDistance#*0.6*CameraX#,cy#+CameraDistance#,cz#+CameraDistance#*0.6*CameraZ#)
- setcameralookat(1,cx#,cy#,cz#,0)
- settextstring(fpsreadout,"FPS = "+str(ScreenFPS()))
- //Print( ScreenFPS() )
- Sync()
- until quit=1
- quit=0
- end
- function init()
- create_my_editbox(groupeditbox,basex#+xgap#,basey#,1,200,0,0,0,bx#,by#,255,"0")
- create_my_editbox(rededitbox,basex#+xgap#,basey#+ygap#,1,200,0,0,0,bx#,by#,255,"255")
- create_my_editbox(greeneditbox,basex#+xgap#,basey#+ygap#*2,1,200,0,0,0,bx#,by#,255,"255")
- create_my_editbox(blueeditbox,basex#+xgap#,basey#+ygap#*3,1,200,0,0,0,bx#,by#,255,"255")
- create_my_editbox(pbodyeditbox,basex#+xgap#*2,basey#,1,200,0,0,0,bx#,by#,255,"1")
- create_my_editbox(pshapeeditbox,basex#+xgap#*2,basey#+ygap#,1,200,0,0,0,bx#,by#,255,"2")
- create_my_editbox(sizexeditbox,basex#+xgap#*2,basey#+ygap#*2,1,200,0,0,0,bx#,by#,255,"20")
- create_my_editbox(sizeyeditbox,basex#+xgap#*2,basey#+ygap#*3,1,200,0,0,0,bx#,by#,255,"20")
- create_my_editbox(sizezeditbox,basex#+xgap#*2,basey#+ygap#*4,1,200,0,0,0,bx#,by#,255,"20")
- create_my_editbox(shapeeditbox,basex#+xgap#,basey#+ygap#*4,1,200,0,0,0,bx#,by#,255,"0")
- create_my_editbox(gametypeeditbox,basex#+xgap#*3,basey#,1,200,0,0,0,bx#,by#,255,"0")
- create_my_text(Groupeditbox,baseboxX#-xtextdiff#,baseboxy#-12,25,255,0,0,"Group --- ",0)
- create_my_text(rededitbox,baseboxX#-xtextdiff#,baseboxy#-12+ygap#,25,255,0,0,"Red --- ",0)
- create_my_text(greeneditbox,baseboxX#-xtextdiff#,baseboxy#-12+ygap#*2,25,255,0,0,"Green --- ",0)
- create_my_text(blueeditbox,baseboxX#-xtextdiff#,baseboxy#-12+ygap#*3,25,255,0,0,"Blue --- ",0)
- create_my_text(shapeeditbox,baseboxX#-xtextdiff#,baseboxy#-12+ygap#*4,25,255,0,0,"Shape --- ",0)
- create_my_text(pbodyeditbox,baseboxX#+xgap#+30,baseboxy#-12,25,255,0,0,"PHYBod --- ",0)
- create_my_text(pshapeeditbox,baseboxX#+xgap#+30,baseboxy#-12+ygap#,25,255,0,0,"PHYShape --- ",0)
- create_my_text(sizexeditbox,baseboxX#+xgap#+30,baseboxy#-12+ygap#*2,25,255,0,0,"SizeX# --- ",0)
- create_my_text(sizeyeditbox,baseboxX#+xgap#+30,baseboxy#-12+ygap#*3,25,255,0,0,"SizeY# --- ",0)
- create_my_text(sizezeditbox,baseboxX#+xgap#+30,baseboxy#-12+ygap#*4,25,255,0,0,"SizeZ# --- ",0)
- create_my_text(fpsreadout,baseboxX#-xtextdiff#,baseboxy#+ygap#*24,15,255,0,0,"FPS",0)
- createobjectbox(cursorobject,sizex#,sizey#,sizez#)
- setobjectimage(cursorobject,1,0)
- SetObjectTransparency(cursorobject,1)
- SetObjectCollisionMode(cursorobject,0)
- setobjectposition(cursorobject,cx#,cy#,cz#)
- createobjectplane(7000,100,100)
- setobjectimage(7000,2,0)
- setobjectrotation(7000,90,0,0)
- setobjectposition(7000,0,-0.5,0)
- SetObjectTransparency(7000,1)
- setobjectcollisionmode(7000,0)
- setobjectcolor(7000,255,255,255,50)
- createsprite(1,currenttexture)
- setspritesize(1,128,128)
- setspriteposition(1,900,600)
- fixspritetoscreen(1,1)
- endfunction
- function create_my_editbox(number,x#,y#,bordersize#,r,g,b,backcolor,bsizex#,bsizey#,alpha,box$)
- createeditbox(number)
- SetEditBoxBorderSize(number,bordersize#)
- SetEditBoxTextColor(number,r,g,b)
- SetEditBoxBorderColor(number,r,g,b,alpha)
- SetEditBoxBackgroundColor( number, 0, 0, 0, alpha )
- seteditboxsize(number,bsizex#,bsizey#)
- SetEditBoxPosition(number,x#,y#)
- FixEditBoxToScreen(number,1)
- seteditboxdepth(number,0)
- SetEditBoxText(number,box$)
- endfunction
- function curvevalue(Destination#,Current#,Smooth#)
- Current#=Current#+((Destination#-Current#)/Smooth#)
- endfunction Current#
- function PI()
- endfunction 3.14159265
- function load_images()
- for n=1 to 200
- f$=str(n) + ".png"
- if getfileexists(f$)
- loadimage (n,f$)
- SetImageWrapU(n,1)
- SetImageWrapV(n,1)
- endif
- next
- endfunction
- function create_my_text(number,x#,y#,size,r,g,b,mystring$,depth)
- createtext(number,mystring$)
- settextsize(number,size)
- settextcolor(number,r,g,b,255)
- SetTextPosition(number,x#,y#)
- FixTextToScreen(number,1)
- settextdepth(number,depth)
- //SetTextFontImage ( number, 2 )
- endfunction
- function control()
- obj=caster(cx#,cy#,cz#)
- if getrawkeystate(KEY_CONTROL)
- div=4
- else
- div=0
- endif
- if getrawkeypressed(KEY_L)
- load_model(currenttexture)
- endif
- if getrawkeypressed(KEY_K)
- setcamerarotation(1,GetCameraAngleX(1)-20,0,0)
- endif
- if getrawkeypressed(KEY_M)
- setcamerarotation(1,GetCameraAngleX(1)+20,0,0)
- endif
- if getrawkeypressed(KEY_SHIFT)
- if obj>0 and obj<>cursorobject
- for n=1 to maxobjects
- if object[n].ID=obj
- select object[n].selected
- case 0
- setobjectcolor(obj,255,0,0,100)
- object[n].selected=1
- inc objectselectedcount
- endcase
- case 1
- setobjectcolor(obj,255,255,255,255)
- object[n].selected=0
- dec objectselectedcount
- endcase
- endselect
- exit
- endif
- next n
- if objectselectedcount=1
- objectselected1=obj
- endif
- if objectselectedcount=2
- objectselected2=obj
- endif
- endif
- endif
- if getrawkeypressed(KEY_DELETE)
- for n=1 to maxobjects
- if object[n].selected=1
- deleteobject(object[n].ID)
- object[n].deleted=1
- endif
- next n
- objectselectedcount=0
- objectselected1=0
- objectselected2=0
- endif
- if getrawkeypressed(KEY_C)
- clear_level()
- endif
- if getrawkeypressed(KEY_S)
- hide_stuff()
- test_level()
- show_stuff()
- endif
- if getrawkeypressed(KEY_T)
- inc sunmod
- if sunmod>1
- sunmod=0
- endif
- select sunmod
- case 0
- setsunactive(0)
- SetAmbientColor( 0,0,0 )
- print("sun off")
- print(str(sunmod))
- endcase
- case 1
- setsunactive(1)
- print("sun on")
- SetAmbientColor( 255,255,255 )
- print(str(sunmod))
- endcase
- endselect
- endif
- if getrawkeypressed(KEY_A)
- if div=0
- cy#=cy#+gy#
- else
- cy#=cy#+2.5
- endif
- endif
- if getrawkeypressed(KEY_Z)
- if div=0
- cy#=cy#-gy#
- else
- cy#=cy#-2.5
- endif
- endif
- if getrawkeypressed(KEY_LEFT)
- if div=0
- cx#=cx#+gx#
- else
- cx#=cx#+2.5
- endif
- endif
- if getrawkeypressed(KEY_RIGHT)
- if div=0
- cx#=cx#-gx#
- else
- cx#=cx#-2.5
- endif
- endif
- if getrawkeypressed(KEY_UP)
- if div=0
- cz#=cz#-gz#
- else
- cz#=cz#-2.5
- endif
- endif
- if getrawkeypressed(KEY_DOWN)
- if div=0
- cz#=cz#+gz#
- else
- cz#=cz#+2.5
- endif
- endif
- if getrawkeyreleased(KEY_SPACE)
- select group
- case 0
- select shape
- case 2
- pobj=createobjectbox(sizex#,sizey#,sizez#)
- endcase
- case 1
- pobj=createobjectsphere(sizex#,32,32)
- endcase
- endselect
- setobjectimage(pobj,currenttexture,0)
- SetObjectPosition(pobj,cx#,cy#,cz#)
- set_object_value(pobj)
- inc objpointer
- endcase
- case 1
- select shape
- case 2
- pobj=createobjectbox(sizex#,sizey#,sizez#)
- endcase
- case 1
- pobj=createobjectsphere(sizex#,32,32)
- endcase
- endselect
- setobjectimage(pobj,currenttexture,0)
- SetObjectPosition(pobj,cx#,cy#,cz#)
- set_object_value(pobj)
- inc objpointer
- endcase
- case 6
- lobj=loadobject("lightbulb.obj")
- setobjectposition(lobj,cx#,cy#,cz#)
- setobjectcolor(lobj,red,green,blue,255)
- createpointlight(lightnumber,cx#,cy#+10,cz#,80,red,green,blue)
- setpointlightposition(lightnumber,cx#,cy#,cz#)
- setobjectlightmode(lobj,0)
- //SetPointLightMode(lightnumber,1)
- light[lightnumber].ObjID=lobj
- light[lightnumber].lightID=lightnumber
- light[lightnumber].x#=cx#
- light[lightnumber].y#=cy#
- light[lightnumber].z#=cz#
- light[lightnumber].red=red
- light[lightnumber].green=green
- light[lightnumber].blue=blue
- light[lightnumber].flicker=flicker
- inc lightnumber
- endcase
- endselect
- endif
- if getrawkeypressed(KEY_LBRACKET) and currenttexture>1
- dec currenttexture
- setspriteimage(1,currenttexture)
- endif
- if getrawkeypressed(KEY_RBRACKET)
- inc currenttexture
- setspriteimage(1,currenttexture)
- endif
- if GetRawKeyPressed(KEY_F1)
- load_level(level)
- endif
- if GetRawKeyPressed(KEY_F4)
- save_level(level)
- endif
- endfunction
- function read_boxes()
- if getrawkeypressed(KEY_ENTER)
- repeat
- focus=GetCurrentEditBox()
- select focus
- case Groupeditbox
- t$=geteditboxtext(Groupeditbox)
- group=val(t$)
- select group
- case 6
- change_cursor(6)
- endcase
- case 0
- change_cursor(0)
- endcase
- endselect
- endcase
- case rededitbox
- t$=geteditboxtext(rededitbox)
- red=val(t$)
- endcase
- case greeneditbox
- t$=geteditboxtext(greeneditbox)
- green=val(t$)
- endcase
- case gametypeeditbox
- t$=geteditboxtext(gametypeeditbox)
- gametype=val(t$)
- endcase
- case blueeditbox
- t$=geteditboxtext(blueeditbox)
- blue=val(t$)
- endcase
- case sizexeditbox
- t$=geteditboxtext(sizexeditbox)
- sizex#=valfloat(t$)
- change_cursor(0)
- endcase
- case sizeyeditbox
- t$=geteditboxtext(sizeyeditbox)
- sizey#=valfloat(t$)
- change_cursor(0)
- endcase
- case sizezeditbox
- t$=geteditboxtext(sizezeditbox)
- sizez#=valfloat(t$)
- change_cursor(0)
- endcase
- case pbodyeditbox
- t$=geteditboxtext(pbodyeditbox)
- phybody=val(t$)
- endcase
- case pshapeeditbox
- t$=geteditboxtext(pshapeeditbox)
- physhape=val(t$)
- endcase
- case shapeeditbox
- t$=geteditboxtext(shapeeditbox)
- shape=val(t$)
- change_cursor(0)
- endcase
- endselect
- sync()
- until GetRawKeyReleased(KEY_ENTER)
- endif
- endfunction
- function change_cursor(mode)
- if getobjectexists(cursorobject)
- deleteobject(cursorobject)
- endif
- select mode
- case 0
- select shape
- case 2
- createobjectbox(cursorobject,sizex#,sizey#,sizez#)
- endcase
- case 1
- createobjectsphere(cursorobject,sizex#,32,32)
- endcase
- endselect
- setobjectimage(cursorobject,1,0)
- SetObjectTransparency(cursorobject,1)
- SetObjectCollisionMode(cursorobject,0)
- setobjectposition(cursorobject,cx#,cy#,cz#)
- endcase
- case 6
- loadobject(cursorobject,"lightbulb.obj")
- setobjectposition(cursorobject,cx#,cy#,cz#)
- setobjectcolor(cursorobject,red,green,blue,255)
- endcase
- endselect
- endfunction
- function caster(oldx#,oldy#,oldz#)
- pobj = ObjectsphereCast(0,oldx#,oldy#,oldz#,getobjectx(cursorobject),getobjecty(cursorobject),getobjectz(cursorobject),rad#/2)
- if pobj>0
- obj=GetObjectRayCastHitID(0)
- endif
- endfunction obj
- function set_object_value(objnum)
- object[objpointer].ID=objnum
- object[objpointer].image=currenttexture
- object[objpointer].x#=cx#
- object[objpointer].y#=cy#
- object[objpointer].z#=cz#
- object[objpointer].pb=phybody
- object[objpointer].ps=physhape
- object[objpointer].group=group
- object[objpointer].transparency=transparency
- object[objpointer].visible=visibility
- object[objpointer].shape=shape
- object[objpointer].red=red
- object[objpointer].green=green
- object[objpointer].blue=blue
- object[objpointer].rotatex=rotx
- object[objpointer].rotatey=roty
- object[objpointer].rotatez=rotz
- object[objpointer].friction#=friction#
- object[objpointer].sizex#=sizex#
- object[objpointer].sizey#=sizey#
- object[objpointer].sizez#=sizez#
- object[objpointer].name$ = name$
- endfunction
- function clear_level()
- for n=1 to maxobjects
- if getobjectexists(object[n].ID)
- deleteobject(object[n].ID)
- endif
- if getobjectexists(light[n].ObjID)
- deleteobject(light[n].ObjID)
- deletepointlight(light[n].lightID)
- endif
- object[n].ID=0
- object[n].image=0
- object[n].x#=0
- object[n].y#=0
- object[n].z#=0
- object[n].pb=0
- object[n].ps=0
- object[n].group=0
- object[n].transparency=0
- object[n].visible=0
- object[n].shape=0
- object[n].red=0
- object[n].green=0
- object[n].blue=0
- object[n].rotatex=0
- object[n].rotatey=0
- object[n].rotatez=0
- object[n].friction#=0
- object[n].sizex#=0
- object[n].sizey#=0
- object[n].sizez#=0
- object[n].selected=0
- object[n].deleted=0
- next n
- cx#=0
- cy#=0
- cz#=0
- objpointer=1
- lightnumber=1
- group=0
- seteditboxtext(groupeditbox,str(group))
- change_cursor(0)
- endfunction
- function save_level(level)
- select gametype
- case 0
- f$=""
- f$="levelP"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 1
- f$=""
- f$="levelF"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 2
- f$=""
- f$="levelR"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 3
- f$=""
- f$="levelB"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 5
- f$=""
- f$="levelS"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- endselect
- myfile=opentowrite(f$,0)
- for n=1 to maxobjects
- writestring(myfile,object[n].name$)
- writefloat(myfile,object[n].x#)
- writefloat(myfile,object[n].y#)
- writefloat(myfile,object[n].z#)
- writefloat(myfile,object[n].sizex#)
- writefloat(myfile,object[n].sizey#)
- writefloat(myfile,object[n].sizez#)
- writefloat(myfile,object[n].friction#)
- writeinteger(myfile,object[n].ID)
- writeinteger(myfile,object[n].image)
- writeinteger(myfile,object[n].group)
- writeinteger(myfile,object[n].shape)
- writeinteger(myfile,object[n].visible)
- writeinteger(myfile,object[n].transparency)
- writeinteger(myfile,object[n].pb)
- writeinteger(myfile,object[n].ps)
- writeinteger(myfile,object[n].rotatex)
- writeinteger(myfile,object[n].rotatey)
- writeinteger(myfile,object[n].rotatez)
- writeinteger(myfile,object[n].red)
- writeinteger(myfile,object[n].green)
- writeinteger(myfile,object[n].blue)
- writeinteger(myfile,object[n].deleted)
- //************* Write the lights ****************
- writefloat(myfile,light[n].x#)
- writefloat(myfile,light[n].y#)
- writefloat(myfile,light[n].z#)
- writeinteger(myfile,light[n].ObjID)
- writeinteger(myfile,light[n].lightID)
- writeinteger(myfile,light[n].red)
- writeinteger(myfile,light[n].green)
- writeinteger(myfile,light[n].blue)
- writeinteger(myfile,light[n].flicker)
- writeinteger(myfile,light[n].deleted)
- next n
- writeinteger(myfile,objpointer)
- writeinteger(myfile,lightnumber)
- closefile(myfile)
- create_my_text(700,1,180,35,0,255,0,"Saved!!",0)
- sync()
- sleep(2000)
- deletetext(700)
- endfunction
- function load_level(level)
- select gametype
- case 0
- f$=""
- f$="levelP"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 1
- f$=""
- f$="levelF"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 2
- f$=""
- f$="levelR"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 3
- f$=""
- f$="levelB"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- case 5
- f$=""
- f$="levelS"
- f$=f$+str(level)
- f$=f$+".lev"
- endcase
- endselect
- if getfileexists(f$)=1
- clear_level()
- myfile=opentoread(f$)
- for n=1 to maxobjects
- object[n].name$=readstring(myfile)
- object[n].x# =readfloat(myfile)
- object[n].y# =readfloat(myfile)
- object[n].z# =readfloat(myfile)
- object[n].sizex# =readfloat(myfile)
- object[n].sizey# =readfloat(myfile)
- object[n].sizez# =readfloat(myfile)
- object[n].friction# = readfloat(myfile)
- object[n].ID = readinteger(myfile)
- object[n].image = readinteger(myfile)
- object[n].group = readinteger(myfile)
- object[n].shape = readinteger(myfile)
- object[n].visible = readinteger(myfile)
- object[n].transparency = readinteger(myfile)
- object[n].pb = readinteger(myfile)
- object[n].ps = readinteger(myfile)
- object[n].rotatex = readinteger(myfile)
- object[n].rotatey = readinteger(myfile)
- object[n].rotatez = readinteger(myfile)
- object[n].red = readinteger(myfile)
- object[n].green = readinteger(myfile)
- object[n].blue = readinteger(myfile)
- object[n].deleted = readinteger(myfile)
- light[n].x#=readfloat(myfile)
- light[n].y#=readfloat(myfile)
- light[n].z#=readfloat(myfile)
- light[n].ObjID=readinteger(myfile)
- light[n].lightID=readinteger(myfile)
- light[n].red=readinteger(myfile)
- light[n].green=readinteger(myfile)
- light[n].blue=readinteger(myfile)
- light[n].flicker=readinteger(myfile)
- light[n].deleted=readinteger(myfile)
- next n
- objpointer=readinteger(myfile)
- lightnumber=readinteger(myfile)
- closefile(myfile)
- for n=1 to maxobjects
- if object[n].ID>0
- select object[n].shape
- case 2
- createobjectbox(object[n].ID,object[n].sizex#,object[n].sizey#,object[n].sizez#)
- endcase
- case 1
- createobjectsphere(object[n].ID,object[n].sizex#,32,32)
- endcase
- endselect
- setobjectimage(object[n].ID,object[n].image,0)
- SetObjectTransparency(object[n].ID,object[n].transparency)
- SetObjectVisible(object[n].ID,object[n].visible)
- setobjectcolor(object[n].ID,object[n].red,object[n].green,object[n].blue,255)
- SetObjectRotation(object[n].ID,object[n].rotatex,object[n].rotatey,object[n].rotatez)
- setobjectposition(object[n].ID,object[n].x#,object[n].y#,object[n].z#)
- endif
- next n
- for n=1 to maxobjects
- if light[n].lightID>0
- loadobject(light[n].ObjID,"lightbulb.obj")
- setobjectposition(light[n].ObjID,light[n].x#,light[n].y#,light[n].z#)
- createpointlight(light[n].lightID,light[n].x#,light[n].y#,light[n].z#,120,light[n].red,light[n].green,light[n].blue)
- setpointlightposition(light[n].lightID,light[n].x#,light[n].y#,light[n].z#)
- endif
- next n
- endif
- endfunction
- function createobjectphysics(myobj,myphybody,myphyshape)
- select myphybody
- case 1
- Create3DPhysicsStaticBody(myobj)
- endcase
- case 2
- Create3DPhysicsDynamicBody(myobj)
- endcase
- endselect
- select myphyshape
- case 1
- SetObjectShapesphere(myobj)
- endcase
- case 2
- SetObjectShapebox(myobj)
- endcase
- endselect
- //SetObject3DPhysicsMass(myobj,0.7)
- endfunction
- function Test_Level()
- if GetVirtualJoystickExists(1)=0
- addvirtualjoystick(1,150,600,100)
- endif
- if GetVirtualJoystickExists(2)=0
- addvirtualjoystick(2,1000,600,100)
- endif
- CameraDistance# = 40
- setsunactive(1)
- //SetAmbientColor( 0,0,0 )
- oldcamrx=getcameraanglex(1)
- oldcamry=getcameraangley(1)
- oldcamrz=getcameraanglez(1)
- setcamerarotation(1,0,0,0)
- for n=1 to maxobjects
- if object[n].ID>0
- createobjectphysics(object[n].ID,object[n].pb,object[n].ps)
- SetObject3DPhysicsFriction(object[n].ID,1)
- if object[n].group=1
- player=object[n].ID
- setobjectscale(player,0.6,0.6,0.6)
- SetObject3DPhysicsRollingFriction(player,1)
- setobject3dphysicscansleep(player,0)
- endif
- endif
- if light[n].lightID>0
- setobjectvisible(light[n].ObjID,0)
- endif
- next n
- Repeat
- px#=getobjectx(player)
- py#=getobjecty(player)
- pz#=getobjectz(player)
- Step3DPhysicsWorld()
- if getrawkeypressed(KEY_E)
- quit=1
- endif
- //SetObject3DPhysicsangularVelocity(player,GetVirtualJoystickX(1),0,GetVirtualJoystickY(1),100)
- if GetVirtualJoystickX(1)>0
- movleft=1
- movright=0
- endif
- if movleft=1
- SetObject3DPhysicsangularVelocity(player,0,0,400,400)
- endif
- if GetVirtualJoystickX(1)<0
- movright=1
- movleft=0
- endif
- if movright=1
- SetObject3DPhysicsangularVelocity(player,0,0,-400,400)
- endif
- if GetVirtualJoystickX(1)=0
- movright=0
- movleft=0
- SetObject3DPhysicsAngularVelocity(player,0.1,0.1,0.1,0.1)
- endif
- if gametype=1
- if GetVirtualJoystickY(1)<0
- SetObject3DPhysicsangularVelocity(player,-200,0,0,200)
- endif
- if GetVirtualJoystickY(1)>0
- SetObject3DPhysicsangularVelocity(player,200,0,0,200)
- endif
- if getvirtualjoystickx(2)<0
- //setcamerarotation(1,0,GetCameraAngleY(1)-1,getcameraanglez(1))
- //rotyy#=rotyy#-1
- endif
- endif
- if getrawkeypressed(KEY_SPACE)
- SetObject3DPhysicslinearVelocity(player,GetObject3DPhysicslinearVelocityX(player),300,0,300)
- endif
- select gametype
- case 0
- setcameralookat(1,px#,py#,pz#,0)
- setcameraposition(1,px#,py#+90,pz#+90)
- endcase
- case 1
- setcameraposition(1,px#,py#,pz#)
- endcase
- endselect
- //setobjectrotation(player,0,rotyy#,0)
- sync()
- until quit=1
- quit=0
- setsunactive(1)
- SetAmbientColor( 255,255,255 )
- CameraDistance# = 130
- Level_cleanup()
- for n=1 to maxobjects
- if light[n].lightID>0
- setobjectvisible(light[n].ObjID,1)
- endif
- next n
- endfunction
- function hide_stuff()
- setobjectvisible(cursorobject,0)
- setobjectposition(cursorobject,-1000000,-1000000,-1000000)
- for n=1 to 100
- if geteditboxexists(n)
- seteditboxvisible(n,0)
- endif
- if gettextexists(n)
- settextvisible(n,0)
- endif
- next n
- endfunction
- function show_stuff()
- setobjectvisible(cursorobject,1)
- setobjectposition(cursorobject,cx#,cy#,cz#)
- for n=1 to 100
- if geteditboxexists(n)
- seteditboxvisible(n,1)
- endif
- if gettextexists(n)
- settextvisible(n,1)
- endif
- next n
- endfunction
- function Level_cleanup()
- for n=1 to maxobjects
- if object[n].id>0
- setobjectposition(object[n].id,object[n].x#,object[n].y#,object[n].z#)
- delete3dphysicsbody(object[n].id)
- endif
- next n
- endfunction
- function load_model(currenttexture)
- model$=ChooseRawFile("*.obj")
- if model$>""
- name$=model$
- `myobject[objectnumber].name$=myname$
- pobj=loadobject(model$)
- setobjectposition(pobj,cx#,cy#,cz#)
- setobjectscale(pobj,sizex#,sizey#,sizez#)
- setobjectimage(pobj,currenttexture,0)
- set_object_value(pobj)
- inc objpointer
- endif
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement