;
; ------------------------------------------------------------
;
; PureBasic - PointPick 2D->3D
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 1
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY, Depth = 150
If InitEngine3D()
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
LoadTexture(0, "flare.png")
CreateMaterial(0, TextureID(0))
DisableMaterialLighting(0, 1)
MaterialBlendingMode (0, #PB_Material_Add)
CreateParticleEmitter(0, 10, 1, 1, 0)
ParticleMaterial (0, MaterialID(0))
ParticleTimeToLive (0, 2, 2)
ParticleEmissionRate(0, 20)
ParticleSize (0, 30, 30)
ParticleColorRange (0, RGB(255, 255, 0), RGB(0, 255, 0))
ParticleEmitterDirection(0, 0, -1, 0)
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 0, 200, #PB_Absolute)
LoadSprite(0, "Data/Textures/Geebee2.bmp")
TransparentSpriteColor(0, RGB(255, 0, 255))
Repeat
Screen3DEvents()
If ExamineMouse()
Depth + MouseWheel() * 10
Mx = MouseX()
My = MouseY()
If PointPick(0, Mx, My)
MoveParticleEmitter(0, CameraX(0) + PickX() * Depth,
CameraY(0) + PickY() * Depth,
CameraZ(0) + PickZ() * Depth, #PB_Absolute)
EndIf
EndIf
ExamineKeyboard()
RenderWorld()
DisplayTransparentSprite(0, Mx - SpriteWidth(0)/2, My - SpriteHeight(0)/2)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Ошибка", "3D Движок не может быть инициализирован", 0)
EndIf
End