Not my code. It's quite big as well.
If you can hack your way through it may help:
If you can hack your way through it may help:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() PositionEntity camera,0,1000,0 CameraRange camera,950,1050 CameraZoom camera,75 ; eliminate perspective Local hit1$,hit2$, rad#=0,dist#=5,mode=1 c2=CreateSphere() EntityColor c2,255,50,50 : EntityAlpha c2,0.7 PositionEntity c2,0,0,0 PointEntity camera,c2 EntityRadius c2,1 c3=CreateSphere() EntityColor c3,0,0,255 : EntityAlpha c3,0.7 pickLine=CreateCylinder(16,True,c3) ; The pickline radius RotateMesh pickline,-90,0,0 EntityColor pickLine,255,255,0 : EntityAlpha pickline,0.6 distline=CreateCylinder(8,True,c3) ; The distance line RotateMesh distline,-90,0,0 EntityColor distline,0,255,0 y#=0 While Not KeyDown( 1 ) hit1$="" hit2$="" If KeyHit(57) Then mode=(mode+1) Mod 3 :; space changes pickmode (none,sphere,poly) EntityPickMode c2,mode x#=x+(KeyDown(205)-KeyDown(203))*0.1 ; Left/Right arrow Alters X z#=z+(KeyDown(200)-KeyDown(208))*0.1 ; Up/Down arrow Alters Z rad=rad+(KeyHit(210)-KeyHit(211))*0.1 ; Insert/Delete alters radius dist=dist+(KeyHit(199)-KeyHit(207))*0.1 ; Home/End alters distance PositionEntity c3,x,y,z ScaleEntity pickLine,rad,rad,dist/2 PositionEntity pickLine,0,0,rad+dist/2 ScaleEntity distline,0.1,0.1,dist/2 PositionEntity distline,0,0,dist/2 If EntityPick(c3,dist#)<>0 Then hit1$="Entitypick found entity" If LinePick(x#,y#,z#,0,0,dist#,rad#)<>0 Then hit2$="Linepick found entity" UpdateWorld RenderWorld Color 255,255,255 Text 0,0,"X:"+EntityX(c3)+" Y:"+EntityY(c3)+" Z:"+EntityZ(c3)+" Pick:"+mode+" Dist:"+dist+" Radius:"+rad Text 0,15,"Arrow keys to move, Insert/Delete alters Radius, Home/End alters pick distance, Spacebar changes pick mode" Color 0,255,0 Text 0,30,hit1$ Color 255,255,0 Text 0,50,hit2$ Flip Wend End