Posted: 13th Mar 2004 17:10
ok, here is my source code :

+ Code Snippet
CLS
sync on: sync rate 0
rem loading map, objects
load bitmap "height.bmp",1
load image "grass2.bmp",1

rem end
rem definice
Color Backdrop RGB(255,255,255)
INK rgb(0,0,0),rgb(0,0,0)

Backdrop on
set camera range 0,1,1000000000
fog off
fog color rgb(255,255,255)
fog distance 9000000

msize = 12000000
msize2 = msize / 2
tiles = 50
tsize = msize/tiles
mnum = 1
heightscale = 10000
rem end

make matrix 1,msize,msize,tiles,tiles




prepare matrix texture 1,1,1,1
set matrix 1,0,0,1,3,1,1,1
position matrix 1,-msize2,0,-msize2

position camera 10000,100,1000
rotate camera 0,0,0
hide mouse
rem init matrix start
set current bitmap 1
for tilz = 0 to tiles
for tilx = 0 to tiles

aktualheight = rgbr(point(tilx,tilz))
set matrix height 1,tilx, tilz, aktualheight*heightscale

next tilx
next tilz
set current bitmap 0
update matrix 1
rem konec
tilz = 0
tilx = 0

rem load trees

rem end

do


rem ovladani

if shiftkey()
if upkey()then move camera 1500
else
if upkey()then move camera 1000
if downkey() then move camera -15
if spacekey() then hh = hh + 100
endif

xrotate camera camera angle x() + mousemovey()*0.3
yrotate camera camera angle y() + mousemovex()*0.3
rem konec ovladani

rem refresh



cx = camera position x()
cz = camera position z()
mx = matrix position x(mnum)
mz = matrix position z(mnum)
dx=(mx+msize/2)-cx
dz=(mz+msize/2)-cz
 if dz > tsize
 shift matrix down mnum
 rem zmena vysky dolu
 set current bitmap 1

 for tilx = 0 to tiles
 Zslozka = 0 + tilez
 Xslozka = tilx + tilex
 aktualheight = rgbr(point(Xslozka,Zslozka))
 set matrix height 1,tilx, 0, aktualheight*heightscale
 next tilx

 set current bitmap 0
 rem konec
 position matrix mnum,mx,0,mz-tsize
 endif
 if dz < -tsize
 shift matrix up mnum
 rem zmena vysky nahoru
 set current bitmap 1

 for tilx = 0 to tiles
 Zslozka = tiles + tilez
 Xslozka = tilx + tilex
 aktualheight = rgbr(point(Xslozka,Zslozka))
 set matrix height 1,tilx, tiles, aktualheight*heightscale
 next tilx

 set current bitmap 0
 rem konec
 position matrix mnum,mx,0,mz+tsize
 endif
 if dx > tsize
 shift matrix right mnum
 rem zmena vysky doprava
 set current bitmap 1

 for tilz = 0 to tiles
 Zslozka = tilz + tilez
 Xslozka = 0 + tilex
 aktualheight = rgbr(point(Xslozka,Zslozka))
 set matrix height 1,0, tilz, aktualheight*heightscale
 next tilz

 set current bitmap 0
 rem konec
 position matrix mnum,mx-tsize,0,mz
 endif
 if dx < -tsize
 shift matrix left mnum
 rem zmena vysky doleva
 set current bitmap 1

 for tilz = 0 to tiles
 Zslozka = tilz + tilez
 Xslozka = tiles + tilex
 aktualheight = rgbr(point(Xslozka,Zslozka))
 set matrix height 1,tiles, tilz, aktualheight*heightscale
 next tilz

 set current bitmap 0
 rem konec
 position matrix mnum,mx+tsize,0,mz
 endif


 update matrix mnum



h#=get ground height(1,camera position x()-matrix position x(1),camera position z()-matrix position z(1))
rem konec refresh

rem pozice
posx = int(camera position x())
posz = int(camera position z())
tilex = (posx/(msize/tiles))
tilez = (posz/(msize/tiles))
rem konec pozice

rem text
position camera camera position x(),h#+18000,camera position z()

INK rgb(0,0,0),rgb(0,0,0)
TEXT 1,1, "FPS: " +str$(screen fps())
TEXT 1,10, "pozice X: "+str$(camera position x()) + "  pozice Z: "+str$(camera position z())
TEXT 1,20, "TILE X: "+str$(tilex) + "  TILE Z: "+str$(tilez)
text 1,30, "vyska: "+str$(h#)
TEXT 1,40, "POINT X: "+str$(tilx+tilex) + "  POINT Z: "+str$(tilz+tilez)
TEXT 1,50, "DZ: "+str$(dz) + "  TSIDE X: "+str$(tside)

if tilex < 0 or tilez < 0 or tilex > bitmap width(1)-1 or tilez > bitmap height(1)-1
INK rgb(255,0,0),rgb(255,0,0)
TEXT screen width()/2-100, screen height()/2,"You are in NON ZONE!!!!!"
endif
rem konec text
sync
loop


Height.bmp is heightmap you have to create own heightmap about size ....ex: 64x64 or 2000x2000 its 64x64 tiles and 2000x2000 tiles

grass2.bmp is texture of tile
Posted: 15th Mar 2004 23:07
any questions ?
Posted: 16th Mar 2004 21:32
Yeah... what IS this?
Posted: 17th Mar 2004 20:27
hmmm ! viz Thread
Posted: 18th Mar 2004 16:05
Yeah... what IS this?

I think it loads height maps...but i'm not sure.
Posted: 18th Mar 2004 18:41
General will correct me if I am wrong but its basically a way of creating an infinite matrix. Its the method seen in games such as Bullfrog's Magic Carpet and others.

Its very cool.

Philip
Posted: 19th Mar 2004 11:04
hmm ... Yes, Its true .. but infinite ? no. I have created ex: heightmap 1000x1000 ..normally will be create matrix 1000x1000 (tiles) but my program create matrix only 30x30 and is dynamic loading. i can walk for all heightmap. So, this function work in game FLASHPOINT. Look to Codebase ... Is in codebase with all media.