; ; ------------------------------------------------------------ ; ; PureBasic - Particle ; ; (c) Fantaisie Software ; ; ------------------------------------------------------------ ; #CameraSpeed = 1 IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb" Define.f KeyX, KeyY, MouseX, MouseY If InitEngine3D() Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem) InitSprite() InitKeyboard() InitMouse() If Screen3DRequester() Parse3DScripts() LoadTexture(0, "dirt.jpg") CreateMaterial(0, TextureID(0)) CreatePlane (0,256,256,1,1,8,8):CreateEntity(0, MeshID(0), MaterialID(0),0,0,0) LoadTexture(1, "smoke.png") CreateMaterial(1, TextureID(1)) DisableMaterialLighting(1, 1) MaterialBlendingMode (1, #PB_Material_AlphaBlend) LoadTexture(2, "flare.png") CreateMaterial(2, TextureID(2)) DisableMaterialLighting(2, 1) MaterialBlendingMode (2, #PB_Material_Add) ;- CreateParticleEmitter(1, 0, 0, 0, #PB_Particle_Point, 50, 5, 50) ParticleMaterial(1, MaterialID(1)) ParticleSize(1, 5, 5) ParticleColorRange(1, RGB(155,0,0), RGB(200,0,0)) ParticleColorFader(1, -0.5, -0.5, -0.5, -0.5) ParticleEmitterDirection(1, 0, 1, 0) ParticleTimeToLive (1, 2,2) ParticleVelocity(1, #PB_Particle_Velocity,20) ParticleEmitterAngle(1, 45) ParticleAcceleration(1, 0.2, 0, 0) ParticleEmissionRate(1, 151) ;- CreateParticleEmitter(2, 0, 0, 0, #PB_Particle_Point, -50,0,50) ParticleMaterial(2, MaterialID(2)) ParticleSize (2, 5, 5) ParticleColorRange(2, RGB(255,255,0), RGB(0,255,255)) ParticleEmitterDirection(2, 0, 1, 0) ParticleTimeToLive (2, 2,1) ParticleVelocity(2, #PB_Particle_Velocity,80) ParticleAcceleration(2, 0, -1, 0) ParticleEmissionRate(2, 100) ;- CreateParticleEmitter(3, 256, 256, 130, #PB_Particle_Point, 0,65, 0) ParticleMaterial (3, MaterialID(2)) ParticleSize (3, 2, 2) ParticleEmitterDirection(3, 0, 1, 0) ParticleTimeToLive (3, 2,4) ParticleVelocity(3, #PB_Particle_Velocity,-10) ParticleEmissionRate(3, 1000) ;- CreateParticleEmitter(4, 0, 0, 0, #PB_Particle_Point, -50, 5,-50) ParticleMaterial(4, MaterialID(1)) ParticleSize(4, 5, 5) ParticleEmissionRate(4, 50) ParticleColorRange(4, RGB(0,255,0), RGB(0,0,255)) ParticleColorFader(4, 1, 2, 2, -1) ParticleTimeToLive (4, 1, 1) ParticleVelocity(4, #PB_Particle_Velocity,35) ParticleEmitterAngle(4,5) ParticleAcceleration(4, -0.5, 0, 0) ParticleEmitterDirection(4, 0, 1, 0) ;- CreateParticleEmitter(5, 0, 0, 0, #PB_Particle_Point, -50, 5, -50) ParticleMaterial(5, MaterialID(1)) ParticleSize (5, 4, 4) ParticleEmissionRate(5, 100) ParticleColorRange(5, RGB(0,0,255), RGB(0,0,200)) ParticleColorFader(5, -1, -1, -1, -1) ParticleTimeToLive (5, 1, 1) ParticleVelocity(5, #PB_Particle_Velocity, 30) ParticleEmitterAngle(5, 0) ParticleEmitterDirection(5, 0, 1, 0) ;- Camera CreateCamera(0, 0, 0, 100, 100) MoveCamera(0, 100, 40, 100, #PB_Absolute) CameraLookAt(0, 0, 0, 0) Repeat Screen3DEvents() If ExamineMouse() MouseX = -MouseDeltaX() * #CameraSpeed * 0.05 MouseY = -MouseDeltaY() * #CameraSpeed * 0.05 EndIf If ExamineKeyboard() If KeyboardPushed(#PB_Key_Left) KeyX = -#CameraSpeed ElseIf KeyboardPushed(#PB_Key_Right) KeyX = #CameraSpeed Else KeyX = 0 EndIf If KeyboardPushed(#PB_Key_Up) KeyY = -#CameraSpeed ElseIf KeyboardPushed(#PB_Key_Down) KeyY = #CameraSpeed Else KeyY = 0 EndIf EndIf angle+4 MoveParticleEmitter(5, Sin(Radian(angle))*10, 5, Cos(Radian(angle))*10, #PB_Absolute) RotateCamera(0, MouseY, MouseX, 0, #PB_Relative) MoveCamera (0, KeyX, 0, KeyY) RenderWorld() FlipBuffers() Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1 EndIf Else MessageRequester("Error", "The 3D Engine can't be initialized", 0) EndIf End