; TriangleVertex Example ; ---------------------- ; TriangleVertex is the reverse of AddTriangle: it reads back which ; vertex index forms a given corner (0, 1 or 2) of a triangle. ; Space cycles through the corners; a marker highlights the vertex ; that TriangleVertex reports. Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-4 mesh=CreateMesh() surf=CreateSurface(mesh) ; One triangle with a distinct colour per corner v0=AddVertex(surf,-1.5,-1,0) v1=AddVertex(surf,0,1.5,0) v2=AddVertex(surf,1.5,-1,0) VertexColor surf,v0,255,80,80 VertexColor surf,v1,80,255,80 VertexColor surf,v2,80,160,255 tri=AddTriangle(surf,v0,v1,v2) ; Show vertex colours without needing a light EntityFX mesh,2 ; A marker sphere highlights the reported vertex marker=CreateSphere() ScaleEntity marker,0.12,0.12,0.12 EntityColor marker,255,0,255 EntityFX marker,1 corner=0 While Not KeyDown(1) ; Space cycles corner 0 -> 1 -> 2 If KeyHit(57) Then corner=(corner+1) Mod 3 ; The documented command: which vertex forms this corner? v=TriangleVertex(surf,tri,corner) ; Park the marker on that vertex using its stored position PositionEntity marker,VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v) ; Arrow keys move the camera If KeyDown(200) Then MoveEntity camera,0,0,0.1 If KeyDown(208) Then MoveEntity camera,0,0,-0.1 If KeyDown(203) Then TurnEntity camera,0,1,0 If KeyDown(205) Then TurnEntity camera,0,-1,0 RenderWorld Text 0,0,"Space: next corner Arrow keys: move camera Esc: exit" Text 0,20,"TriangleVertex(surf,"+tri+","+corner+") = vertex "+v Flip Wend End