@draknir_: Here, try this =) It's the Usage example of set matrix normal =) Look specifically at edit_matrix for help on nx#, ny#, and nz# =)
Here's the code:
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
I've attached the needed media =)
Hope this helps! =)
Good Luck w/ your project! =)
~M.W~