Ok, those who have seen my posts realize ive only been doing this for a week. Enough said, Im stumped with a particle engine I am trying to write. Im in the experimental stage, so some of the variables arent used yet. So far, Im trying to make the sprites travel a certain distance. Even though i have a dist# of 2, the sprites seem to be going forever. Even though I have a sprite creation total of 2 (numSprite), again it seems like infinity of sprites. Here is the code:
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
AmbientLight 255,255,255
camera = CreateCamera()
PositionEntity camera, 0,0,0
Global particle_Img, particle_Spr; particle engine
Type particle
Field ent ;reference created sprite
Field scale# ;sprites scale
Field dist# ;sprites distance to travel
Field speed# ;sprites speed
Field x#, y#, z# ;initial location of sprite
End Type
flag = 1; flag to enable particle creation one time
While Not KeyDown(1)
particleEffects ("fire.bmp",flag, 2, 0.5, 2, 10, 0, 0, 10)
;release some particles
UpdateWorld
RenderWorld
Flip
Wend
End
Function particleEffects (img$, flag, num_Particles,speed#, dist#, scale#, x#, y#, z#)
;img$ = filename
;flag = first time creating?
;num_particles = number of total particles
;speed# = particles speed
;dist# = distance to travel : scale# = particles scale
;x#,y#,z# = initial x,y,z location
If flag = 1
particle_Img = LoadTexture (img)
particle_Spr = CreateSprite ()
EntityTexture particle_Spr, particle_Img
ScaleEntity particle_Spr, scale#, scale#, scale#
PositionEntity particle_Spr, x#, y#, z#
For i = 1 To num_Particles
particle.particle = New particle
particle\ent = CopyEntity (particle_Spr)
particle\x# = x# : particle\y# = y# : particle\z# = z#
particle\scale# = scale#
particle\dist# = dist#
particle\speed# = speed#
Next
For particle.particle = Each particle
MoveEntity
particle\ent, particle\dist#,particle\dist#, particle\dist#
Next
flag = 0
EndIf
End Function
-----------------------------------------------------
sorry for the mess, I dont know how people post code so well :) the code looks better on my screen :)
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
AmbientLight 255,255,255
camera = CreateCamera()
PositionEntity camera, 0,0,0
Global particle_Img, particle_Spr; particle engine
Type particle
Field ent ;reference created sprite
Field scale# ;sprites scale
Field dist# ;sprites distance to travel
Field speed# ;sprites speed
Field x#, y#, z# ;initial location of sprite
End Type
flag = 1; flag to enable particle creation one time
While Not KeyDown(1)
particleEffects ("fire.bmp",flag, 2, 0.5, 2, 10, 0, 0, 10)
;release some particles
UpdateWorld
RenderWorld
Flip
Wend
End
Function particleEffects (img$, flag, num_Particles,speed#, dist#, scale#, x#, y#, z#)
;img$ = filename
;flag = first time creating?
;num_particles = number of total particles
;speed# = particles speed
;dist# = distance to travel : scale# = particles scale
;x#,y#,z# = initial x,y,z location
If flag = 1
particle_Img = LoadTexture (img)
particle_Spr = CreateSprite ()
EntityTexture particle_Spr, particle_Img
ScaleEntity particle_Spr, scale#, scale#, scale#
PositionEntity particle_Spr, x#, y#, z#
For i = 1 To num_Particles
particle.particle = New particle
particle\ent = CopyEntity (particle_Spr)
particle\x# = x# : particle\y# = y# : particle\z# = z#
particle\scale# = scale#
particle\dist# = dist#
particle\speed# = speed#
Next
For particle.particle = Each particle
MoveEntity
particle\ent, particle\dist#,particle\dist#, particle\dist#
Next
flag = 0
EndIf
End Function
-----------------------------------------------------
sorry for the mess, I dont know how people post code so well :) the code looks better on my screen :)