test this please fps and basic veiws welcome

Blitz3D Forums/Blitz3D Programming/test this please fps and basic veiws welcome

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Graphics3D 1024,768,32,1

ClearWorld(1,1,1)

Global Player=CreateSphere(32)
PositionEntity player,4,4,4
Global MAPRANGE=50;CHANGES THE NUMBER OF TERRAINS IN VIEW
Global brush,cam

cam=CreateCamera()
lgt=CreateLight(2)
LightRange lgt,200
PositionEntity cam,0,5,0
RotateEntity cam,0,45,0
CameraRange cam,1,1000
brush=LoadBrush("grass1.png");PLACE ANY TEXTURE HERE
;BrushFX brush,1
Dim Vertx#(11,11)
Dim Verty#(11,11)
Dim Vertz#(11,11)
Dim Maparray.Map_area(100)

Type Map_tile
    Field Maptile
	Field Active
	Field tile_id[100]
	Field Brush_id[100]
	Field tilex
	Field tiley
	Field tilez
End Type

Type Map_Segm
	Field Active
	Field Maptile.Map_tile[10000]
End Type

Type Map_sect
	Field Active
	Field Mapsegm.Map_segm[100]
End Type

Type Map_area
    Field Active
	Field Mapsect.Map_sect[100]
End Type

For times4=1 To 10
maparray(times4)=New Map_area
For times3=1 To 10
maparray(times4)\mapsect[times3]=New map_sect
For times2=1 To 10
maparray(times4)\mapsect[times3]\mapsegm[times2]=New Map_Segm
For times=1 To 100
maparray(times4)\mapsect[times3]\mapsegm[times2]\maptile[times]=New Map_tile
maparray(times4)\mapsect[times3]\mapsegm[times2]\maptile[times]\active=1
Next
Next
Next
Next


For tiles=1 To 100
read_Maptile(tiles)
log_maptile(tiles)
create_maptile(tiles)
Next
tiles=0


For x=1 To 10
For z=1 To 10
tiles=tiles+1
PositionEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile,x*10,0,z*10
Next
Next

;create_skybox()
Print maparray(1)\mapsect[1]\mapsegm[1]\maptile[1]\tile_id[32]

While Not KeyHit(1)
If KeyDown(200) Then MoveEntity cam,0,0,.02
If KeyDown(208) Then MoveEntity cam,0,0,-.02
If KeyDown(203) Then TurnEntity cam,0,.05,0
If KeyDown(205) Then TurnEntity cam,0,-.05,0
EntityParent lgt,cam 
Hide_it
UpdateWorld
RenderWorld


Flip 0
Wend
End



.Sector1
Data 3,3,2,1,1,1,1,2,3,3
Data 3,3,2,1,1,1,1,2,3,3
Data 2,2,2,1,1,1,1,2,2,2
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 2,2,2,1,1,1,1,2,2,2
Data 3,3,2,1,1,1,1,2,3,3
Data 3,3,2,1,1,1,1,2,3,3


Function Read_Maptile(tiles)
Restore Sector1
For times=1 To 100
Read maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]
maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]=maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]
Next
End Function

Function log_maptile(tiles)
For high=1 To 9
times=0
For x=1 To 10
For z=1 To 10
times=times+1
If maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]=high Then 
vertx#(x,z)=-6+x
verty#(x,z)=high/2-1
vertz#(x,z)=-6+z
vertx#(x,z+1)=-6+x
verty#(x,z+1)=high/2-1
vertz#(x,z+1)=-6+z+1
vertx#(x+1,z+1)=-6+x+1
verty#(x+1,z+1)=high/2-1
vertz#(x+1,z+1)=-6+z+1
vertx#(x+1,z)=-6+x+1
verty#(x+1,z)=high/2-1
vertz#(x+1,z)=-6+z
EndIf
Next
Next
Next
End Function

Function create_maptile(tiles)
maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile=CreateMesh()
surf=CreateSurface(maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile,brush)
For x=1 To 10
For z=1 To 10
v1=AddVertex (surf,vertx#(x,z),verty#(x,z),vertz#(x,z),0,0)
v2=AddVertex (surf,vertx#(x,z+1),verty#(x,z+1),vertz#(x,z+1),0,1)
v3=AddVertex (surf,vertx#(x+1,z+1),verty#(x+1,z+1),vertz#(x+1,z+1),1,1)
v4=AddVertex (surf,vertx#(x+1,z),verty#(x+1,z),vertz#(x+1,z),1,0)
t1=AddTriangle(surf,v1,v2,v3)
t2=AddTriangle(surf,v3,v4,v1)
Next
Next
UpdateNormals maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile
End Function

Function Hide_it()
For times=1 To 100
If EntityDistance(maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile,cam)>maprange Then 
HideEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile
EndIf
If EntityDistance(maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile,cam)<maprange Then 
ShowEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile
EndIf
Next
End Function

Function create_skybox()
    mesh = CreateMesh()

    ;front face
    brush = LoadBrush("front.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,-1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,-1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;right face
    brush = LoadBrush("right.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,-1,0,0
    AddVertex surface,+1,+1,+1,1,0
    AddVertex surface,+1,-1,+1,1,1
    AddVertex surface,+1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;back face
    brush = LoadBrush("back.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,-1,+1,+1,1,0
    AddVertex surface,-1,-1,+1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
 
    ;left face
    brush = LoadBrush("left.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,0
    AddVertex surface,-1,+1,-1,1,0
    AddVertex surface,-1,-1,-1,1,1
    AddVertex surface,-1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;top face
    brush = LoadBrush("top.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,1
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,-1,+1,-1,1,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
   
    ;bottom face 
    brush = LoadBrush("bottom.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,-1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddVertex surface,-1,-1,+1,0,0
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
    
    ScaleMesh mesh,200,200,200
    FlipMesh mesh
    EntityFX mesh,1 ; make fullbright
    Return mesh
    UpdateNormals mesh
End Function