; ------------------------------------------------------------ ; ; PureBasic - Particle ; ; (c) Fantaisie Software ; ; ------------------------------------------------------------ ; #CameraSpeed = 1 Define.f KeyX, KeyY, MouseX, MouseY InitEngine3D() InitSprite() InitKeyboard() InitMouse() ExamineDesktops():dx=DesktopWidth(0)*0.8:dy=DesktopHeight(0)*0.8 OpenWindow(0, 0,0, DesktopUnscaledX(dx),DesktopUnscaledY(dy), " Particle - [Esc] quit",#PB_Window_ScreenCentered) OpenWindowedScreen(WindowID(0), 0, 0, dx, dy, 0, 0, 0) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem) Parse3DScripts() CreateCamera(0, 0, 0, 100, 100) CameraBackColor(0,$884444) ; ground LoadTexture(0, "Dirt.jpg") CreateMaterial(0, TextureID(0)) CreatePlane (0,1000,1000,1,1,32,32) CreateEntity(0, MeshID(0), MaterialID(0),0,0,0) LoadTexture(1, "smoke2.png") CreateMaterial(1, TextureID(1)) DisableMaterialLighting(1, 1) MaterialBlendingMode (1, #PB_Material_AlphaBlend) SetMaterialAttribute(1,#PB_Material_TAM,#PB_Material_ClampTAM) LoadTexture(2, "flare.png") CreateMaterial(2, TextureID(2)) DisableMaterialLighting(2, 1) MaterialBlendingMode (2, #PB_Material_Add) LoadTexture(3, "flaretrail.png") CreateMaterial(3, TextureID(3)) DisableMaterialLighting(3, 1) MaterialBlendingMode (3, #PB_Material_Add) SetMaterialAttribute(3,#PB_Material_TAM,#PB_Material_ClampTAM) LoadTexture(4, "water.png") CreateMaterial(4, TextureID(4)) DisableMaterialLighting(4, 1) MaterialBlendingMode (4, #PB_Material_AlphaBlend) SetMaterialAttribute(4,#PB_Material_TAM,#PB_Material_ClampTAM) ; Fire ; CreateParticleEmitter(1, 0, 0, 0, 0,50,5,50) ParticleMaterial (1, MaterialID(1)) ParticleSize (1, 3,3) ParticleColorRange(1, $00ffff, $0000ff) ParticleColorFader(1, -1, -1, -1, -0.5) ParticleEmitterDirection(1, 0, 1, 0) ParticleEmitterAngle(1,30) ParticleTimeToLive (1, 2,2) ParticleVelocity(1, 2,20) ParticleAcceleration(1, 0.2, 0, 0) ParticleScaleRate(1,5) ParticleAngle(1,-180,180,-90,90) ParticleEmissionRate(1, 50) ; Water fall ; CreateParticleEmitter(2, 0, 0, 0, 0, -50,0,50) ParticleMaterial (2, MaterialID(4)) ParticleSize (2, 1,1):ParticleScaleRate(2,5) ParticleColorFader(2, 0, 0, 0, -0.4) ParticleEmitterDirection(2, 0, 1, 0) ParticleTimeToLive (2, 2,2) ParticleVelocity(2, 2,100) ParticleAcceleration(2, 0, -1, 0) ParticleEmitterAngle(2,5) ParticleAngle(2,-180,180,-180,180) ParticleEmissionRate(2, 100) ; Snow ; CreateParticleEmitter(3, 50, 50, 0, 0, 50,40,-50) ParticleMaterial (3, MaterialID(2)) ParticleSize (3, 2, 2) ParticleEmitterDirection(3, 0, 1, 0) ParticleTimeToLive (3, 4,4) ParticleVelocity(3, 2,-10) ParticleEmissionRate(3, 50) ; FireWorks ; CreateParticleEmitter(4, 0, 0, 0, 0, -50,5,-50) ParticleMaterial (4, MaterialID(3)) ParticleSize (4, 10,10) ParticleColorRange(4, $ff0088, $0088ff) ParticleEmitterDirection(4, 0, 1, 0) ParticleEmitterAngle(4,30) ParticleTimeToLive (4, 1.5,1.5) ParticleVelocity(4, 2,80) ParticleAcceleration(4, 0, -1, 0) ParticleAngle(4,0,0,0,360) ParticleEmissionRate(4, 100) ; Multicolor torch ; CreateParticleEmitter(5, 0, 0, 0, 0, 0,0,0) ParticleMaterial (5, MaterialID(1)) ParticleSize (5, 1,1) ParticleEmissionRate(5, 25) ParticleColorRange(5, $00ff00, $ffff00) ParticleColorFader(5, 0.5, 0, 0, -0.5) ParticleTimeToLive (5, 2, 2) ParticleVelocity(5, 2,30) ParticleEmitterAngle(5,5) ParticleScaleRate(5,8) ParticleAngle(5,-180,180,-90,90) ParticleEmitterDirection(5, 0, 1, 0) ; Red circle ; CreateParticleEmitter(6, 0, 0, 0, 0, 0,0,0) ParticleMaterial (6, MaterialID(2)) ParticleSize (6, 4,4) ParticleEmissionRate(6, 40) ParticleColorRange(6, $0000ff, $0000ff) ParticleScaleRate(6,-2) ParticleTimeToLive (6, 2, 2) ParticleVelocity(6, 2,0) Repeat While WindowEvent():Wend ExamineKeyboard() a.f+0.005 MoveCamera(0,Cos(a)*120,30,Sin(a)*120,#PB_Absolute) ParticleEmitterDirection(5, Sin(a*5), 1, Cos(a*5)) MoveParticleEmitter(6, Sin(a*5)*20, 2, Cos(a*5)*20,#PB_Absolute) CameraLookAt(0,0,0,0) RenderWorld() FlipBuffers() Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1