December 03, 2020, 08:26:49 PM

Author Topic: [bb] B3d loader for cartography shop by D4NM4N [ 1+ years ago ]  (Read 547 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : B3d loader for cartography shop
Author : D4NM4N
Posted : 1+ years ago

Description : Code to load data from CS4 complete with entity data, lightmaps and texture blending for hardware lights

Code :
Code: BlitzBasic
  1. ;B3D DATA LOADER By DanmaN, for use with CS4.1
  2.  
  3. ;LIST OF CShop KEYS: UPPER OR LOWERCASE (it gets converted anyway)
  4. ;KEY                    VALUE                   PURPOSE
  5. ;------------------------------------------------------------------------------------------------------
  6. ;CLASSNAME              Light                   lights only, will recreate the lighting using CS4 rules
  7. ;range
  8. ;color
  9. ;etc
  10.  
  11. ;LIST OF SPECIAL KEYS : (uc/lc case gets converted anyway)
  12. ;KEY                    VALUE                   PURPOSE
  13. ;-----------------------------------------------------------------------------------------------------
  14. ;NAME                   any                             any mesh or entity, just an easy way of finding the object in records
  15. ;                                                               later in your program
  16. ;ALPHA                  #0-1                    any mesh, transparancy 1-solid 0-invisible 0.5-ghost etc.
  17.  
  18.  
  19. ;note to get rid of text/visuals search for 'testcode'
  20.  
  21. ;the usual
  22. Graphics3D 800,600,16,1
  23. SetBuffer BackBuffer()
  24. AmbientLight 0,0,0
  25.  
  26. ;def. object data structure
  27. Global map
  28. Type Obj_Data
  29.         Field handler                   ;entity handle
  30.         Field Name$                             ;name as defined in cs4 with 'NAME   =   Value'
  31.         Field key$[8]                   ;Data key
  32.         Field value$[8]                 ;Data key value
  33.         Field rawdata$[16]              ;Only used for parsing can do something else in own program.
  34. End Type
  35.  
  36.  
  37. map=loadb3d("dans.b3d")
  38.  
  39. Print"Hit mouse To walk map...."
  40. Repeat
  41. Until MouseHit(1)
  42. walkmap()
  43.  
  44.  
  45. End;
  46.  
  47.  
  48.  
  49. ;-----------------------------------------------------------------------------------------------------
  50. ;####################################################################################################
  51.  
  52.  
  53. Function loadb3d(filename$)
  54.  
  55.  
  56. ;load map & count children
  57. ;TextureFilter "",2
  58. TextureFilter "MSK",4
  59. TextureFilter "TRN",2
  60. map=LoadAnimMesh(filename)
  61. cc=CountChildren(map)
  62.  
  63.  
  64. For ent=1 To cc;for each entity
  65.  
  66.        
  67.         ;get Handle & 'name' of child
  68.         chi=GetChild (map,ent)
  69.         attr$=EntityName(chi)
  70.         ;create record & store handle
  71.         If attr<>""
  72.        
  73.                 ;new record
  74.                 obj.obj_data = New obj_data
  75.                 objhandler  = chi
  76.                
  77.                 ;string parser to delete unwanted chars & separate lines
  78.                 attr$=Replace$(attr$,Chr(34),"")
  79.                 attr$=Replace$(attr$,Chr(10),"#")
  80.                 currentstr=1
  81.                 For b=1 To Len(attr)
  82.                         If Mid(attr,b,1)="#" Then
  83.                                 currentstr=currentstr+1
  84.                         Else
  85.                                 obj
  86. awdata[currentstr]=obj
  87. awdata[currentstr]+Mid(attr,b,1)
  88.                         EndIf
  89.                 Next   
  90.  
  91.                 ;string parser 2 divide into Data segs For fields
  92.                 For dat=1 To 8
  93.                         switch=0
  94.                         attr=obj
  95. awdata[dat]
  96.                         For b=1 To Len(attr)   
  97.                                
  98.                                 If Mid(attr,b,1)="=" Then
  99.                                         switch=1
  100.                                 Else
  101.                                         If switch=0 Then objkey[dat]   = objkey[dat]   + Mid(attr,b,1)
  102.                                         If switch=1 Then objvalue[dat] = objvalue[dat] + Mid(attr,b,1)
  103.                                 EndIf
  104.                         Next   
  105.                         ;extract real name value using the CS4 key 'NAME'
  106.                         If Upper(objkey[dat])="NAME"
  107.                                 obj
  108. ame = Upper(objvalue[dat])
  109.                                
  110.                         EndIf  
  111.                 Next                   
  112.  
  113.                 ;reset raw Data
  114.                 For dat=1 To 16
  115.                         obj
  116. awdata[dat]=""
  117.                 Next
  118.  
  119.                 ;TESTCODE - remove this ################################
  120.                 Print "-------------------------------------------------"
  121.                 Print "NAME: "+obj
  122. ame+"     Handle:"+Str(objhandler)
  123.                 For dat=1 To 8
  124.                         Print "DATA: "+objkey[dat]+"<=>"+objvalue[dat]
  125.                 Next   
  126.                 Delay(100)
  127.                 ;########################################################
  128.  
  129.                 ;alpha
  130.                 For a=1 To 8
  131.                         If      Upper(objkey[a])="ALPHA" Then EntityAlpha objhandler,Float(objvalue[a])        
  132.                 Next
  133.                 ;create lights
  134.                 If Upper(objkey[1])="CLASSNAME" And Upper(objValue[1])="LIGHT"
  135.                         lh=CreateLight(2)
  136.                         ;testcode - remove this ################
  137.                         lb=CreateSphere(10):EntityFX lb,1
  138.                         ;#######################################                       
  139.                         For a=1 To 8
  140.                                 PositionEntity lh,EntityX(objhandler),EntityY(objhandler),EntityZ(objhandler)
  141.                                 ;testcode - remove this ###############
  142.                                 PositionEntity lb,EntityX(objhandler),EntityY(objhandler),EntityZ(objhandler)
  143.                                 ;#######################################                       
  144.                                 objhandler=lh
  145.                                 If Upper(objkey[a])="RANGE"
  146.                                         LightRange lh, Float(objvalue[a])
  147.                                 EndIf
  148.                                 If Upper(objkey[a])="COLOR"
  149.                                         ;parse colors
  150.                                         cR$="":cG$="":cB$="":switch=1
  151.                                         For ch=1 To Len(objvalue[a])
  152.                                                 If Mid (objvalue[a],ch,1)=" "
  153.                                                         switch=switch+1
  154.                                                 Else
  155.                                                         If switch=1 Then cR=cR+Mid (objvalue[a],ch,1)
  156.                                                         If switch=2 Then cg=cg+Mid (objvalue[a],ch,1)
  157.                                                         If switch=3 Then cb=cb+Mid (objvalue[a],ch,1)
  158.                                                 EndIf
  159.                                         Next
  160.                                        
  161.                                         LightColor lh, Float(cr),Float(cg),Float(cb)
  162.                                         ;testcode - remove this ################
  163.                                         EntityColor lb, Float(cr),Float(cg),Float(cb)
  164.                                         ;#######################################                       
  165.                                 EndIf
  166.                
  167.                                
  168.                         Next
  169.                 EndIf
  170.                
  171.         EndIf
  172.        
  173.         ;Set Surfaces For receiving hardware lights
  174.         nv=CountSurfaces(chi)
  175.         EntityFX chi,0
  176.         Print nv:Delay(100)
  177.  
  178.         If nv>0 Then
  179.                 surf=GetSurface (chi,1)
  180.                 brsh=GetSurfaceBrush(surf)
  181.                 BrushFX brsh,0
  182.                 tex=GetBrushTexture(brsh,1)
  183.                 TextureBlend tex,2 ;USE 0 to toggle LM on-off 2 TO ADD, USE 3 TO MULTIPLY
  184.                 BrushTexture brsh,tex,0,1
  185.                 PaintMesh chi,brsh
  186.                 FreeBrush brsh
  187.                 FreeTexture tex
  188.                 ;PaintEntity chi,brsh
  189.                
  190.         EndIf
  191.         UpdateNormals chi
  192.                
  193.        
  194. Next;object
  195.  
  196. Return map
  197. End Function
  198.  
  199.  
  200. ;####################################################################################################
  201.  
  202.  
  203.  
  204. Function walkmap()
  205.  
  206. cam=CreateCamera()
  207. CameraRange cam,10,1000000
  208. TurnEntity cam,0,35,0
  209. sph=CreateSphere (10,cam)
  210. MoveEntity sph,0,0,100
  211. ScaleEntity sph,4,4,4
  212.  
  213.  
  214. MoveEntity cam,0,200,-1500
  215. ;CameraZoom cam,1.5
  216.  
  217. l=CreateLight()
  218. LightColor l,255,0,0
  219. LightRange l,200
  220.  
  221. While Not KeyHit(1)
  222. ;RotateEntity map,180,MilliSecs()/100.0,0
  223. RenderWorld
  224. Flip
  225.         Text 0,0,Str (EntityX(cam))+" "+Str (EntityY(cam))+" "+Str (EntityZ(cam))+"        "
  226.         ; primative Mouse look
  227.         ; ----------
  228.  
  229.         ; Mouse x and y speed
  230.         mxs=MouseXSpeed()
  231.         mys=MouseYSpeed()
  232.        
  233.        
  234.         TurnEntity cam,mys,-mxs,0
  235.         RotateEntity  cam,EntityPitch(cam),EntityYaw(cam),0
  236.         a=a+1:If a=200 Then a=0
  237.        
  238.        
  239. cc=CountChildren(map)
  240.        
  241.         If a>100 Then
  242.                         LightColor l,255,0,0
  243.                         ;ShowEntity map2
  244.                 Else
  245.                         LightColor l,0,0,0
  246.                         ;HideEntity map2
  247.         EndIf
  248.         ; Rest mouse position to centre of screen
  249.         MoveMouse 320,200;
  250.        
  251. If MouseDown(1) MoveEntity cam,0,0,79
  252. If MouseDown(2) MoveEntity cam,0,0,-79
  253.  
  254. Wend
  255. End Function


Comments :


D4NM4N(Posted 1+ years ago)

 ahh bollocks this website doesnt work! my copy/pasted code gets cut off. anyone wants this code email me: danontour2002@...


fredborg(Posted 1+ years ago)

 If you press edit you can update the code. Try pasting it again!


D4NM4N(Posted 1+ years ago)

 Ahh thhas better!


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal