home *** CD-ROM | disk | FTP | other *** search
- rem Particles Functionality
-
- rem Standard Setup Code for all examples
- sync on : sync rate 0 : color backdrop rgb(0,128,0)
- set text font "arial" : set text size 16
- set text to bold : set text transparent
-
- rem Load images
- ImageNumberA=1 : load image "snow.bmp",ImageNumberA
- ImageNumberB=2 : load image "fire.bmp",ImageNumberB
- ImageNumberC=3 : load image "spec.bmp",ImageNumberC
-
- rem Make special particle effects
- ParticleNumberA=1 : make snow particles ParticleNumberA, ImageNumberA, 500,-5,5,5, 10,10,10
- ParticleNumberB=2 : make fire particles ParticleNumberB, ImageNumberB, 500, 5,5,5, 10,10,10
-
- rem Make textured particle effects
- ParticleNumberC=3
- make particles ParticleNumberC, ImageNumberC, 10, 10.0
- position particles ParticleNumberC, -3, 0, 10
- gosub _usingvectors
-
- rem Make colored particle effects in the air
- ParticleNumberD=4
- make particles ParticleNumberD, 0, 10, 10.0
- position particles ParticleNumberD, 3, 2, 10
- set particle emissions ParticleNumberD, 1
- set particle speed ParticleNumberD, 0.005
- set particle velocity ParticleNumberD, 10
-
- rem Setup camera
- position camera 0,1,0
- point camera 0,1,400
-
- rem Main loop
- desc$="Particle Effects"
- while mouseclick()=0
-
- rem Camera control to view particles
- if upkey()=1 then move camera 0.1
- if downkey()=1 then move camera -0.1
- if leftkey()=1 then turn camera left 1
- if rightkey()=1 then turn camera right 1
-
- rem Spark across floor using mouse
- rot#=wrapvalue(rot#+1.0)
- color particles ParticleNumberC, rnd(255), rnd(255), rnd(255)
- position particles ParticleNumberC, (mousex()-320)/50.0, 0, 10
- rotate particles ParticleNumberC, 0, 0, rot#
-
- rem Trigger random particle commands
- if rnd(50)=1 then show particles ParticleNumberD
- if rnd(50)=1 then hide particles ParticleNumberD
- if rnd(5)=1 then set particle emissions ParticleNumberC, 2+rnd(8)
- if rnd(5)=1 then set particle speed ParticleNumberC, (2+rnd(1))/100.0
- if rnd(5)=1 then set particle velocity ParticleNumberC, 4+rnd(2)
- if rnd(5)=1 then set particle gravity ParticleNumberC, rnd(5)
- if rnd(5)=1 then set particle life ParticleNumberC, 50+rnd(50)
- if rnd(5)=1 then set particle floor ParticleNumberC, rnd(1)
- if rnd(5)=1 then set particle chaos ParticleNumberC, rnd(10)/10.0
- if rnd(5)=1 then color particles ParticleNumberD, rnd(255), rnd(255), 0
-
- rem Expressions
- set cursor 0,0
- print "PARTICLES DATA"
- print "exist:";particles exist(ParticleNumberC)
- if particles exist(ParticleNumberC)=1
- print "x:";particles position x(ParticleNumberC)
- print "y:";particles position y(ParticleNumberC)
- print "z:";particles position z(ParticleNumberC)
- endif
-
- rem Show Framerate
- text 20,screen height()-40,desc$
- fps$="DBPro Fps: "+str$(screen fps())
- text screen width()-20-text width(fps$),screen height()-40,fps$
-
- rem Update screen
- sync
-
- rem End loop
- endwhile
-
- rem Delete particles
- delete particles ParticleNumberA
- delete particles ParticleNumberB
- delete particles ParticleNumberC
- delete particles ParticleNumberD
-
- rem End program
- end
-
- _usingvectors:
-
- VectorNumber=1 : ParticlesNumber=3
- result==make vector3(VectorNumber)
- set vector3 VectorNumber, -3, 0, 10
- position particles ParticlesNumber, VectorNumber
- set vector3 VectorNumber, 0, 0, 45
- rotate particles ParticlesNumber, VectorNumber
- set vector3 to particles position VectorNumber, ParticlesNumber
- set vector3 to particles rotation VectorNumber, ParticlesNumber
- rot#=z vector3(VectorNumber)
- result=delete vector3(VectorNumber)
-
- return
-