rem Matrix Functionality gosub _setupcamera gosub _simplematrix : gosub _usingvectors : gosub _mouselook : gosub _deletematrix gosub _texturedmatrix : gosub _mouselook : gosub _deletematrix gosub _modifymatrix : gosub _mouselook gosub _movematrix : gosub _editmatrix : gosub _mouselook gosub _shiftmatrix : gosub _matrixdata gosub _deletematrix rem End of program end _setupcamera: position camera 0,300,0 : autocam off x#=30 : y#=0 return _simplematrix: MatrixNumber=1 make matrix MatrixNumber,1000,1000,25,25 title$="Simple Matrix" return _usingvectors: VectorNumber=1 : MatrixNumber=1 result==make vector3(VectorNumber) set vector3 VectorNumber, -500, 0, -500 position matrix MatrixNumber, VectorNumber set vector3 to matrix position VectorNumber, MatrixNumber result=delete vector3(VectorNumber) return _texturedmatrix: ImageNumber=1 MatrixNumber=1 load image "ground.jpg",ImageNumber make matrix MatrixNumber,1000,1000,25,25 prepare matrix texture MatrixNumber,ImageNumber,1,1 title$="Textured Matrix" return _modifymatrix: ImageNumber=1 load image "ground.jpg",ImageNumber make matrix MatrixNumber,1000,1000,25,25 prepare matrix texture MatrixNumber,ImageNumber,1,1 randomize matrix MatrixNumber,200 : update matrix MatrixNumber : sleep 1000 ImageNumber=2 load image "tile.bmp",ImageNumber prepare matrix texture MatrixNumber,ImageNumber,2,2 : sleep 1000 set matrix wireframe on MatrixNumber : sleep 1000 fill matrix MatrixNumber,100.0,3 : update matrix MatrixNumber : sleep 1000 set matrix wireframe off MatrixNumber title$="Modified Matrix" return _movematrix: position matrix MatrixNumber,0,0,500 TextureMode=1 : set matrix texture MatrixNumber, TextureMode, 0 position matrix MatrixNumber,0,0,0 return _editmatrix: Height#=0.0 : a#=0.0 for x=0 to 25 for z=0 to 25 a#=a#+1 : if a#>359 then a#=a#-360.0 Height#=cos(a#)*50 set matrix height MatrixNumber, x, z, Height# if x<25 and z<25 TileID=1+rnd(3) set matrix tile MatrixNumber, x, z, TileID endif nx#=0.0 : ny#=(sin(a#)+1.0)/2.0 : nz#=0.0 set matrix normal MatrixNumber, x, z, nx#, ny#, nz# next z next x update matrix MatrixNumber title$="Edited Matrix" return _shiftmatrix: clear camera view rgb(0,0,128) for t=1 to 1000 step 3 set cursor 0,0 : print "SHIFTING MATRIX" if t>=001 and t<250 then shift matrix up MatrixNumber if t>=250 and t<500 then shift matrix down MatrixNumber if t>=500 and t<750 then shift matrix left MatrixNumber if t>=750 and t<999 then shift matrix right MatrixNumber update matrix MatrixNumber sleep 3 next t title$="Matrix Data" return _matrixdata: ghost matrix on MatrixNumber clear camera view rgb(0,0,128) while inkey$()<>"x" set cursor 0,0 : print "MATRIX DATA (Press X to Exit)" : print print "exist:";matrix exist(MatrixNumber) print "tilesexist:";matrix tiles exist(MatrixNumber) print "tilecount:";matrix tile count(MatrixNumber) print "wireframe:";matrix wireframe state(MatrixNumber) print "position x:";matrix position x(MatrixNumber) print "position y:";matrix position y(MatrixNumber) print "position z:";matrix position z(MatrixNumber) print "tile height at 12,12:";get matrix height(MatrixNumber, 12, 12) print "ground height at 0,0:";get ground height(MatrixNumber, 0, 0) x#=x#+mousemovey() : y#=y#+mousemovex() : rotate camera x#,y#,0 endwhile ghost matrix off MatrixNumber return _deletematrix: MatrixNumber=1 if matrix exist(MatrixNumber)=1 then delete matrix MatrixNumber return _mouselook: while mouseclick()<>1 set cursor 0,0 : print title$+" (Left Mouse Button To Continue)" x#=x#+mousemovey() : y#=y#+mousemovex() : rotate camera x#,y#,0 endwhile while mouseclick()=1 : endwhile return