tokamak physics thread 2:

Blitz3D Forums/Blitz3D Programming/tokamak physics thread 2:

You can use this to create the tokamak terrain mesh, from a segmented model:
Function TOK_MakeCollider(entity,trisbank=0,vertbank=0,rec=False)

	If EntityClass(entity) = "Mesh"
	
		If rec = False
			vertbank = CreateBank(0)
			trisbank = CreateBank(0)
			
			f_vert = 0
			f_tris = 0
		Else
			f_vert = BankSize(vertbank)/16
			f_tris = BankSize(trisbank)/24
		End If
				
		n_surf = CountSurfaces(entity)
		For s = 1 To n_surf
			surf = GetSurface(entity,s)
			
			n_vert = CountVertices(surf)
			n_tris = CountTriangles(surf)
	
			ResizeBank vertbank,(n_vert+f_vert)*16			
			ResizeBank trisbank,(n_tris+f_tris)*24
			
			For v = 0 To n_vert-1
				bankoffset = (f_vert+v)*16
			
				TFormPoint VertexX#(surf,v),VertexY#(surf,v),VertexZ#(surf,v),entity,0
			
				PokeFloat vertbank,bankoffset	,TFormedX()
				PokeFloat vertbank,bankoffset+4	,TFormedY()
				PokeFloat vertbank,bankoffset+8	,TFormedZ()
				PokeFloat vertbank,bankoffset+12,0.0
			Next
			
			For t = 0 To n_tris-1
				bankoffset = (f_tris+t)*24
			
				PokeInt trisbank,bankoffset   ,f_vert+TriangleVertex(surf,t,0)
				PokeInt trisbank,bankoffset+4 ,f_vert+TriangleVertex(surf,t,1)
				PokeInt trisbank,bankoffset+8 ,f_vert+TriangleVertex(surf,t,2)
				PokeInt trisbank,bankoffset+12,0
				PokeInt trisbank,bankoffset+16,0
				PokeInt trisbank,bankoffset+20,0
			Next	
			
			f_vert = f_vert + n_vert
			f_tris = f_tris + n_tris
		Next
		
	End If

	n_child = CountChildren(entity)
	For c = 1 To n_child
		TOK_MakeCollider(GetChild(entity,c),trisbank,vertbank,True)
	Next
			
	If rec = False
		If vertbank<>0 And trisbank<>0
			f_vert = BankSize(vertbank)/16 
			f_tris = BankSize(trisbank)/24
		
			TOKSIM_SetTerrainMesh vertbank,f_vert,trisbank,f_tris

			FreeBank vertbank
			FreeBank trisbank
		End If
	End If
	
End Function

Just use it like this:
bob = LoadAnimMesh("MyAwesomeLevel.b3d")
TOK_MakeCollider(bob)

And you're done. :)

This tokamak stuff rocks!