; CreateSweep Example ; ------------------- Graphics3D 640,480,0,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,2.5,-8 RotateEntity camera,15,0,0 light=CreateLight() RotateEntity light,45,45,0 ground=CreatePlane() EntityColor ground,70,110,70 ; A crash barrier's cross-section: an I-beam 30 cm wide and 60 cm tall beam=CreateProfile() For index=0 To 11 Read x#,y# AddProfilePoint beam,x,y Next Data -0.15,0 Data 0.15,0 Data 0.15,0.08 Data 0.04,0.08 Data 0.04,0.52 Data 0.15,0.52 Data 0.15,0.6 Data -0.15,0.6 Data -0.15,0.52 Data -0.04,0.52 Data -0.04,0.08 Data -0.15,0.08 closed=True caps=True barrier=0 While Not KeyDown(1) ; C opens or closes the loop, P switches the end caps of an open barrier If KeyHit(46) Then closed=Not closed If barrier Then FreeEntity barrier barrier=0 EndIf If KeyHit(25) Then caps=Not caps If barrier Then FreeEntity barrier barrier=0 EndIf If barrier=0 Then ; A rectangle of corner points, so each corner is mitred sharply route=CreateSpline(closed) AddSplinePoint route,-4,0,-2.5,0,1,True AddSplinePoint route,4,0,-2.5,0,1,True AddSplinePoint route,4,0,2.5,0,1,True AddSplinePoint route,-4,0,2.5,0,1,True ; The profile's x and y become the path's right and up barrier=CreateSweep(beam,route,caps) FreeSpline route EntityColor barrier,200,200,210 EndIf TurnEntity barrier,0,0.2,0 ; 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,"Arrow keys: move camera C: closed loop P: end caps Esc: exit" Text 0,20,"CreateSweep(beam,route,"+caps+") closed spline: "+closed If closed Then Text 0,40,"A closed loop has no ends, so caps make no difference" Else Text 0,40,"An open barrier: look at its ends with and without caps" EndIf Flip Wend End