home *** CD-ROM | disk | FTP | other *** search
- rem Camera Functionality
- autocam on
-
- gosub _setupmatrix
- gosub _simplecamera
- gosub _freeflightcamera
- gosub _mouselookcamera
- gosub _modifycamera
- gosub _trackercamera
- gosub _followcamera
- gosub _usingvectors
- gosub _cameradata
-
- rem End of program
- autocam off
- end
-
- _setupmatrix:
- make matrix 1,1000,1000,100,100
- set matrix height 1,50,50,500
- update matrix 1
- return
-
- _simplecamera:
-
- while mouseclick()<>1
- set cursor 0,0 : print "SIMPLE CAMERA (EULER) (Left Mouse Button To Continue)"
- print "USE ARROW KEYS TO MOVE / A+Z XRotate / S+X ZRotate"
- print "SPACE/RETURN To Toggle Rotation Order"
- if upkey()=1 then move camera 5.0
- if downkey()=1 then move camera -5.0
- if leftkey()=1 then y#=y#-1
- if rightkey()=1 then y#=y#+1
- if inkey$()="a" then x#=x#-1
- if inkey$()="z" then x#=x#+1
- if inkey$()="s" then z#=z#-1
- if inkey$()="x" then z#=z#+1
- if spacekey()=1 then set camera rotation zyx
- if returnkey()=1 then set camera rotation xyz
- xrotate camera x#
- yrotate camera y#
- zrotate camera z#
- endwhile
- while mouseclick()=1 : endwhile
-
- return
-
- _freeflightcamera:
-
- while mouseclick()<>1
- set cursor 0,0 : print "FREE FLIGHT CAMERA (Left Mouse Button To Continue)"
- print "USE ARROW KEYS TO ROTATE / A+Z Roll Camera"
- if upkey()=1 then pitch camera up 1
- if downkey()=1 then pitch camera down 1
- if leftkey()=1 then turn camera left 1
- if rightkey()=1 then turn camera right 1
- if inkey$()="a" then roll camera left 1
- if inkey$()="z" then roll camera right 1
- endwhile
- while mouseclick()=1 : endwhile
-
- return
-
- _mouselookcamera:
-
- backdrop off
- point camera 0,0,0
- while mouseclick()<>1
- set cursor 0,0 : print "MOUSELOOK CAMERA (Left Mouse Button To Continue)"
- x#=x#+mousemovey() : y#=y#+mousemovex() : z#=z#+mousemovez()
- rotate camera x#,y#,z#
- endwhile
- while mouseclick()=1 : endwhile
- color backdrop rgb(128,0,0)
- backdrop on
-
- return
-
- _modifycamera:
-
- rem 22 Degrees Field of View
- set camera fov 22
- set camera range 1,750
- set camera view 10,10,640-10,480-130
-
- return
-
- _trackercamera:
-
- set camera rotation xyz
- position camera 0,100,-500
- while mouseclick()<>1
- center text 320,30,"TRACKER CAMERA (Left Mouse Button To Continue)"
- x#=cos(a#)*500 : z#=sin(a#)*500
- a#=a#+1.0 : if a#>359 then a#=a#-360
- position camera x#,100,z#
- point camera 500,0,500
- endwhile
- while mouseclick()=1 : endwhile
-
- return
-
- _followcamera:
-
- make object sphere 1,10
- set camera rotation xyz
- set camera range 1,3000
- while mouseclick()<>1
- center text 320,30,"FOLLOW CAMERA (Left Mouse Button To Continue)"
- a#=a#+1 : if a#>359 then a#=a#-360
- x#=500+(cos(a#)*100) : z#=500+(sin(a#)*500)
- distance#=200.0 : height#=100.0 : smooth#=25.0
- dx#=x#-camera position x()
- dz#=z#-camera position z()
- angle#=atanfull(dx#,dz#)
- set camera to follow x#,0,z#,angle#,distance#,height#,smooth#,0
- set camera to object orientation 1
- endwhile
- while mouseclick()=1 : endwhile
-
- return
-
- _usingvectors:
-
- VectorNumber=1 : CameraNumber=0
- result==make vector3(VectorNumber)
- set vector3 VectorNumber, 500, 10, 500
- position camera CameraNumber, VectorNumber
- set vector3 VectorNumber, 0, 45, 0
- rotate camera CameraNumber, VectorNumber
- set vector3 to camera position VectorNumber, CameraNumber
- set vector3 to camera rotation VectorNumber, CameraNumber
- x#=x vector3(VectorNumber)
- y#=y vector3(VectorNumber)
- result=delete vector3(VectorNumber)
-
- return
-
- _cameradata:
-
- while inkey$()<>"x"
- set cursor 0,0 : print : print " CAMERA DATA (Press X to Exit)" : print
- print " angle x:";camera angle x()
- print " angle y:";camera angle y()
- print " angle z:";camera angle z()
- print " position x:";camera position x()
- print " position y:";camera position y()
- print " position z:";camera position z()
- x#=x#+mousemovey() : y#=y#+mousemovex() : rotate camera x#,y#,0
- endwhile
-
- return
-