You can do this in many ways, but here a fast example.
Type Cube
Field ISpicked
Field Mesh
End Type
Graphics3D 800,600,32,2
AmbientLight 255,255,255
terrain = CreateTerrain(32) ;LoadTerrain("blbla.bmp")
EntityPickMode terrain, 2
EntityColor terrain,90,155,0
Global pivot = CreatePivot()
Global Camera = CreateCamera()
PositionEntity Camera,0,5,0
RotateEntity Camera,30,-40,0
CreateEntity(10, 0, 10)
While Not KeyHit(1)
MouseUpdate()
UpdateEntity()
RenderWorld
Flip
Wend
Function MouseUpdate()
CameraPick( Camera, MouseX(), MouseY() )
PickedEnt = PickedEntity()
PositionEntity (pivot,PickedX#(),PickedY#(),PickedZ#())
If MouseHit(1)
If PickedEnt <> 0
For cub.Cube = Each Cube
If PickedEnt = cub\Mesh
cub\IsPicked = True
EndIf
Next
EndIf
EndIf
End Function
Function CreateEntity(PosX#, PosY#, PosZ#)
cub.Cube = New Cube
cub\Mesh = CreateCube()
PositionEntity cub\Mesh,PosX#, PosY#, PosZ#
End Function
Function UpdateEntity()
For cub.Cube = Each Cube
If cub\IsPicked
EntityPickMode cub\Mesh,0
EntityColor cub\Mesh,0,200,0
PositionEntity cub\Mesh, EntityX(pivot), EntityY(pivot)+1, EntityZ(pivot)
Else
EntityPickMode cub\Mesh,2
EntityColor cub\Mesh,255,255,255
EndIf
Next
End Function
|