| perhaps some more info would be more helpful... 
 Here is a test function that I am using to create the "walls" (there are many types, this is the basic block, without any special things)
 
 
 
Function add_wall(x,y,z,mesh)
	Local mesh1 = CreateMesh()
	Local surf1 = CreateSurface(mesh1)
	Local vbtr = AddVertex(surf1,x+5,y-7.5,z+5)
	Local vbtl = AddVertex(surf1,x-5,y-7.5,z+5)
	Local vbbr = AddVertex(surf1,x+5,y-7.5,z-5)
	Local vbbl = AddVertex(surf1,x-5,y-7.5,z-5)
	Local vttl = AddVertex(surf1,x-5,y+7.5,z+5)
	Local vttr = AddVertex(surf1,x+5,y+7.5,z+5)
	Local vtbl = AddVertex(surf1,x-5,y+7.5,z-5)
	Local vtbr = AddVertex(surf1,x+5,y+7.5,z-5)
	
	AddTriangle(surf1,vbbl,vbtr,vbtl)	;bottom
	AddTriangle(surf1,vbtr,vbbl,vbbr)	;bottom
	AddTriangle(surf1,vbtl,vttl,vbbl)	;left
	AddTriangle(surf1,vtbl,vbbl,vttl)	;left
	AddTriangle(surf1,vtbl,vtbr,vbbr)	;front
	AddTriangle(surf1,vbbr,vbbl,vtbl)	;front
	AddTriangle(surf1,vbbr,vtbr,vttr)	;right
	AddTriangle(surf1,vttr,vbtr,vbbr)	;right
	AddTriangle(surf1,vttr,vttl,vbtl)	;back
	AddTriangle(surf1,vbtl,vbtr,vttr)	;back
	AddTriangle(surf1,vttl,vttr,vtbr)	;top
	AddTriangle(surf1,vtbr,vtbl,vttl)	;top
	
	AddMesh mesh1,mesh
End Function
 
 Not shown, but I will assign from a mesh two of the triangles to be "clickable", and store their address in an array of types representing their position.  I have two ways of implementing finding which triangle was clicked: One would be two create everything in order, following the array, and then take whatever the index returned from a pick and divide by two (round down), then convert the one dimensional array info into my two dimensional array, to find the type that it is in.  Whenever a block is created or destroyed I would have to delete everything and re-create the mesh all over again.  The other method would be to loop through the array and check every triangle against the picked one and find a match.
 
 I hope some of this made sense...
 
 
 |