You can use this to create the tokamak terrain mesh, from a segmented model:
Just use it like this:
And you're done. :)
This tokamak stuff rocks!
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!