binary Editor with lod tiles
arrow keys move camera
editing the binary data within sector1 changes the map detail by raising quads
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 Global Maxheight=20;change max height cam=CreateCamera() lgt=CreateLight(2) LightRange lgt,200 PositionEntity cam,10,5,10 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 Maxheight 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
arrow keys move camera
editing the binary data within sector1 changes the map detail by raising quads