As I said, I could post one.
;;;;;;;;;;;EXAMPLE Graphics3D 800,600,32,2 C = CreateCamera() Grid = CreateGrid(8,32,.5) Repeat If KeyHit(1) Then : ClearWorld : End : EndIf MoveEntity C,0,0,Float(KeyDown(2)-KeyDown(3))/2 Pan# = Pan# - Float(MouseXSpeed())/3 Tilt# = Tilt# + Float(MouseYSpeed())/3 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 RotateEntity C,Tilt,Pan,0 UpdateWorld RenderWorld Flip False Forever ;;;;;;;;;;;;CREATEGRID Function CreateGrid(GridSize%,Segments%=10,LineWidth#=.1) M = CreateMesh() Surf = CreateSurface(M) GridSize = Abs(GridSize) Segments = Abs(Segments) N# = -(GridSize*Segments)+GridSize/2 While N < GridSize*Segments V = AddVertex(Surf,N,0,GridSize*Segments) AddVertex(Surf,N+LineWidth#,0,GridSize*Segments) AddVertex(Surf,N+LineWidth#,0,-GridSize*Segments) AddVertex(Surf,N,0,-GridSize*Segments) AddTriangle Surf,V,V+1,V+2 AddTriangle Surf,V+2,V+3,V N = N + GridSize Wend N# = -(GridSize*Segments)+GridSize/2 While N < GridSize*Segments V = AddVertex(Surf,GridSize*Segments,0,N) AddVertex(Surf,GridSize*Segments,0,N+LineWidth#) AddVertex(Surf,-GridSize*Segments,0,N+LineWidth#) AddVertex(Surf,-GridSize*Segments,0,N) AddTriangle Surf,V,V+1,V+2 AddTriangle Surf,V+2,V+3,V N = N + GridSize Wend UpdateNormals M EntityFX M,16 Return M End Function