rem Light Functionality sync on rem Call subroutines gosub _createscene gosub _usingvectors gosub _lightshow gosub _deletescene rem End of program end _createscene: rem Create Scene load image "ground.jpg",1 make matrix 1,1000,1000,100,100 prepare matrix texture 1,1,1,1 position matrix 1,-500,0,-500 position camera 0,100,0 rem Set Ambient light set ambient light 20 color ambient light rgb(64,64,128) rem Set Default Light As Sun set directional light 0,0,-1,0 color light 0,192,192,192 rem Create Moving Light LightNumber=1 : z#=500 make light LightNumber set point light LightNumber,0,100,0 color light LightNumber,512,512,256 set light range LightNumber,200 rem Create Lighthouse light make light 2 set spot light 2,45,90 color light 2,512,100,100 position light 2,0,50,400 rem Follow Light make light 3 set spot light 3,15,30 color light 3,-512,-512,0 rem Set up Fog fog on fog distance 500 fog color rgb(255,128,64) set normalization off color backdrop rgb(255,128,64) rem Setup camera rotate camera 20,0,0 return _deletescene: if light exist(1)=1 then delete light 1 if light exist(2)=1 then delete light 2 if light exist(3)=1 then delete light 3 set normalization on fog off return _usingvectors: VectorNumber=1 : LightNumber=2 result==make vector3(VectorNumber) set vector3 VectorNumber, 0, 50, 200 position light LightNumber, VectorNumber set vector3 VectorNumber, 0, 45, 0 rotate light LightNumber, VectorNumber set vector3 to light position VectorNumber, LightNumber set vector3 to light rotation VectorNumber, LightNumber a#=y vector3(VectorNumber) result=delete vector3(VectorNumber) return _lightshow: while inkey$()<>"x" set cursor 0,0 : print "LIGHT COMMANDS (X to Exit)" print "USE ARROW KEYS TO MOVE LIGHT" print "A+Z TO SWITCH SUN OFF/ON" print print "LIGHT DATA" print if rnd(5)=1 then LightNumber=rnd(3) print "number:";LightNumber print "exist:";light exist(LightNumber) print "type:";light type(LightNumber) print "range:";light range(LightNumber) print "visible:";light visible(LightNumber) print "position x:";light position x(LightNumber) print "position y:";light position y(LightNumber) print "position z:";light position z(LightNumber) print "direction x:";light direction x(LightNumber) print "direction y:";light direction y(LightNumber) print "direction z:";light direction z(LightNumber) rem Mouselook Camera mx=mousemovex() : my=mousemovey() rotate camera camera angle x()+my,camera angle y()+mx,0 rem Control Sun if inkey$()="a" then hide light 0 if inkey$()="z" then show light 0 rem Control Moving Light if leftkey()=1 then x#=x#-10 if rightkey()=1 then x#=x#+10 if upkey()=1 then z#=z#+10 if downkey()=1 then z#=z#-10 LightNumber=1 : ObjectNumber=1 set light to object orientation LightNumber,ObjectNumber set light to object position LightNumber,ObjectNumber position light 1,x#,100,z# rem Control Lighthouse light a#=a#+1 : if a#>359 then a#=a#-360 rotate light 2,0,a#,0 rem Control Beam Of Light position light 3,x#,150,z# point light 3,0,0,0 rem Update screen sync endwhile return