home *** CD-ROM | disk | FTP | other *** search
- 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
-