| None. |
|
Returns the entity 'picked' by the most recently executed pick command - CameraPick, EntityPick or LinePick. Returns 0 if the last pick hit nothing. The pick functions already return the picked entity themselves; PickedEntity simply lets you fetch it again later without re-running the pick - for example in a function that inspects all the Picked state after the pick happened elsewhere. See also: PickedX, PickedNX, PickedTime, PickedSurface, PickedTriangle. |
; PickedEntity Example
; --------------------
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,3,-8
light=CreateLight()
RotateEntity light,45,45,0
; Shooting-gallery floor - EntityPickMode 2 makes it pickable by its polygons
floor=CreatePlane()
EntityColor floor,70,110,70
EntityPickMode floor,2
; Three targets, all pickable by their polygons
cube=CreateCube()
PositionEntity cube,-3,1,4
EntityPickMode cube,2
ball=CreateSphere()
PositionEntity ball,0,1.4,4
EntityPickMode ball,2
drum=CreateCylinder()
PositionEntity drum,3,1,4
EntityPickMode drum,2
; Small marker sphere shows the exact pick point
marker=CreateSphere()
ScaleEntity marker,0.15,0.15,0.15
EntityColor marker,255,255,0
HideEntity marker
bob#=0
While Not KeyDown(1)
; Repaint the targets; the picked one is flashed white below
EntityColor cube,200,180,60
EntityColor ball,60,120,220
EntityColor drum,220,80,60
; The ball bobs gently so the gallery feels alive
bob=bob+2
PositionEntity ball,0,1.4+0.4*Sin(bob),4
; Click to shoot - CameraPick casts a pick ray through the mouse cursor
If MouseHit(1) Then CameraPick(camera,MouseX(),MouseY())
; PickedEntity returns whatever the last pick command hit (0 for a miss)
hit=PickedEntity()
; Highlight the picked entity and park the marker on the pick point
If hit<>0
If hit<>floor Then EntityColor hit,255,255,255
ShowEntity marker
PositionEntity marker,PickedX(),PickedY(),PickedZ()
Else
HideEntity marker
EndIf
; Name the picked entity by comparing its handle with our targets
name$="nothing"
If hit=cube Then name$="the cube"
If hit=ball Then name$="the ball"
If hit=drum Then name$="the drum"
If hit=floor Then name$="the floor"
; 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
; Crosshair at the mouse position
Rect MouseX()-6,MouseY(),13,1
Rect MouseX(),MouseY()-6,1,13
Text 0,0,"Click a target or the floor to pick it Arrow keys: move camera Esc: exit"
Text 0,20,"PickedEntity: "+hit+" ("+name$+")"
Flip
Wend
End