Nifty little fire effect - no media needed! Use left/right arrow keys to move torch - fiddle with values to change fire intensity, speed, height etc
Rem Init
Sync On
Hide Mouse
Autocam off
Rem Arrays/Vars
Global PCnt = 75
Global FirstFree = 2
Global FireSpeed# = 0.1
Global FireHeight = 12
Global FireWidth = 2
Global FirePosX#
Global FirePosY#
Global FirePosZ#
Dim PPos#(PCnt, 3)
Dim PScale(PCnt, 2)
Rem Create Texture
create bitmap 1,50,50
ink rgb(200,130,30),0
for x=1 to 1000
ang=rnd(360)
rad=rnd(20)
dot 25+sin(ang)*rad,25+cos(ang)*rad
next x
blur bitmap 1,3
get image 1,0,0,50,50
delete bitmap 1
Rem Create Particles
for t = FirstFree to (PCnt + (FirstFree-1))
Make Object Plain t, 5, 5
Texture Object t, 1
set object ambient t,0
set object transparency t,1
ghost object on t
CP = t - (FirstFree-1)
PScale(CP, 1) = 100
PScale(CP, 2) = 100
PPos#(CP, 1) = Rnd(FireWidth)-(FireWidth/2) + FirePosX#
PPos#(CP, 2) = Rnd(FireHeight) + FirePosY#
PPos#(CP, 3) = Rnd(FireWidth)-(FireWidth/2) + FirePosZ#
PScale(CP, 1) = 101-(PPos#(CP,2)*(100/FireHeight))
PScale(CP, 2) = 101-(PPos#(CP,2)*(100/FireHeight))
next t
Position Camera 0, 20, -50
Make Object Cone 1, 5
ZRotate Object 1, 180
Set Object Cull 1, 0
Rem Main Loop
Do
Rem Control Particles
If Leftkey()=1 then dec FirePosX#, 0.1
If Rightkey()=1 then inc FirePosX#, 0.1
for t = FirstFree to (PCnt + (FirstFree-1))
CP = t - (FirstFree-1)
`Position Object t, PPos#(CP, 1) + FirePosX, PPos#(CP, 2) + FirePosY, PPos#(CP, 3) + FirePosZ
Position Object t, PPos#(CP, 1), PPos#(CP, 2), PPos#(CP, 3)
Scale Object t, PScale(CP, 1), PScale(CP, 2), 100
set object to camera orientation t
If CP > PCnt Then CP = 1
PPos#(CP, 2) = PPos#(CP, 2) + FireSpeed#
PScale(CP, 1) = 101-(PPos#(CP,2)*(100/FireHeight))
PScale(CP, 2) = 101-(PPos#(CP,2)*(100/FireHeight))
If PScale(CP, 1) = 1 or PScale(CP, 2) = 1 or PPos#(CP,2) > FireHeight
PPos#(CP, 1) = Rnd(FireWidth)-(FireWidth/2) + FirePosX#
PPos#(CP, 2) = FirePosY#
PPos#(CP, 3) = Rnd(FireWidth)-(FireWidth/2) + FirePosZ#
PScale(CP, 1) = 100
PScale(CP, 2) = 100
endif
next t
Position Object 1, FirePosX#, FirePosY# - 2.5, FirePosZ#
Rem Sync
Sync
loop