rem Matrix Showcase

rem Standard Setup Code for all examples
sync on : sync rate 0 : color backdrop 0
set text font "arial" : set text size 16
set text to bold : set text transparent

rem Create matrix
load image "face.bmp",1
load image "water.bmp",2
for m=1 to 2
 if m=1 then s=200
 if m=2 then s=100
 make matrix m,s,s,36,36
 if m=1 then position matrix m,-50,20,-50
 if m=2 then position matrix m,0,120,0
 prepare matrix texture m,m,36,36
 ghost matrix on m
 tc=1
 for z=35 to 0 step -1
  x=0
  while x<=35
   set matrix tile m,x,z,tc
   inc tc : inc x
  endwhile
 next z
next m

rem Setup light
set point light 0,50,500,50
color light 0,1000,1000,200

rem Setup camera
position camera 50,170,50
point camera 50,0,50

rem Main loop
desc$="Water Matrix (Hit Space)"
do

rem Space controls wireframe
if spacekey()=1
 if wr=0
  wrstate=1-wrstate
  if wrstate=0 then set matrix wireframe off 1 : set matrix wireframe off 2
  if wrstate=1 then set matrix wireframe on 1 : set matrix wireframe on 2
  wr=1
 endif
else
 wr=0
endif

rem Control matrix like water
for m=1 to 2
 a#=wrapvalue(a#+1)
 for z=0 to 36
  for x=0 to 36
   x#=cos(a#+(x*10))
   y#=sin(a#+(z*10))
   nx#=0.0-(cos(a#+(x*10))*0.25)
   nz#=0.0-(sin(a#+(z*10))*0.25)
   ny#=1.0-nx#-nz#
   set matrix height m,x,z,(x#+y#)*15.0
   set matrix normal m,x,z,nx#,ny#,nz#
  next x
 next z
 update matrix m
next m

rem Show Framerate
text 20,screen height()-40,desc$
fps$="DBPro Fps: "+str$(screen fps())
text screen width()-20-text width(fps$),screen height()-40,fps$

rem Update screen
sync

rem End loop
loop