Ok, i'll edited your .bb file to add scaling
;---------------------------------
;Single Surface Particles by Joker
;Modified by CopperCircle 18/10/03
;---------------------------------
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
cam=CreatePivot()
camera=CreateCamera(cam)
PositionEntity camera,0,15,-30
mesh=CreateMesh()
surface=CreateSurface(mesh)
NUM_PARTICLES=60
Type s_part
Field x#,y#,z#; central position for the quad
Field index; index for the first vertex
Field ang#; ang value. -45 for normal
Field alpha#
Field speed#
Field fadebias#
Field life%
Field ang_speed#
Field active
Field pindex
Field scale#; ******** ADDED
End Type
ang=-45
index=0
tex=LoadTexture("smoke.bmp",2)
EntityTexture mesh,tex
EntityFX mesh,32+2
EntityBlend mesh,3
ScaleEntity mesh,4,4,4
For loop=0 To NUM_PARTICLES
Gosub create_spart
Next
FreeTexture tex
While Not KeyHit(1)
cx=EntityPitch(camera,True)
cy=EntityYaw(camera,True)
cz=0
If KeyDown(2) Then Gosub create_spart
RotateEntity mesh,cx,cy,cz
If MilliSecs()<timer+1000 Then
frame=frame+1
Else
fps=frame
frame=0
timer=MilliSecs()
End If
Gosub update_spart
UpdateWorld
RenderWorld
Text 0,0,"Number of quads="+(index/4)+" fps="+fps+" tris rendered="+TrisRendered()
Text 0,15,"Press 1 to add particles."
Flip 0
Wend
End
.create_spart
p.s_part=New s_part
p\pindex=index
index=index+4
p\active=1
p\x=Rnd(-2,2)
p\y=0
p\z=Rnd(-2,2)
p\life=Rnd(200,600)
p\fadebias=0.002
p\speed=Rnd(0.01,0.02)
p\ang_speed=Rnd(0.1,2)
p\ang=Rnd(-45,135)
v0=AddVertex(surface,p\x,p\y,p\z,0,1)
v1=AddVertex(surface,p\x,p\y,p\z,1,1)
v2=AddVertex(surface,p\x,p\y,p\z,0,0)
v3=AddVertex(surface,p\x,p\y,p\z,1,0)
tri=AddTriangle(surface,v0,v1,v2)
tri1=AddTriangle(surface,v1,v3,v2)
p\scale=Rnd(0.5,1); ******** ADDED
Return
.update_spart
For p.s_part=Each s_part
If p\active=1 Then
p\life=p\life-1
p\y=p\y+p\speed
p\ang=p\ang+p\ang_speed
p\scale=p\scale+0.01; ******** ADDED
VertexCoords(surface,p\pindex+0,p\x+Sin(p\ang)*p\scale,p\y+Cos(p\ang)*p\scale,p\z);; ******** EDITED
VertexCoords(surface,p\pindex+1,p\x+Sin(p\ang+90)*p\scale,p\y+Cos(p\ang+90)*p\scale,p\z); ******** EDITED
VertexCoords(surface,p\pindex+2,p\x+Sin(p\ang-90)*p\scale,p\y+Cos(p\ang-90)*p\scale,p\z); ******** EDITED
VertexCoords(surface,p\pindex+3,p\x+Sin(p\ang+180)*p\scale,p\y+Cos(p\ang+180)*p\scale,p\z); ******** EDITED
VertexColor surface,p\pindex+0,200,200,200,p\life*p\fadebias
VertexColor surface,p\pindex+1,200,200,200,p\life*p\fadebias
VertexColor surface,p\pindex+2,200,200,200,p\life*p\fadebias
VertexColor surface,p\pindex+3,200,200,200,p\life*p\fadebias
If p\life=0
p\active=0
VertexColor surface,p\pindex+0,200,200,200,0
VertexColor surface,p\pindex+1,200,200,200,0
VertexColor surface,p\pindex+2,200,200,200,0
VertexColor surface,p\pindex+3,200,200,200,0
Gosub new_spart
End If
End If
Next
Return
.new_spart
loop_exit=0
For p.s_part=Each s_part
If p\active=0 Then
p\active=1
p\x=Rnd(-2,2)
p\y=0
p\z=Rnd(-2,2)
p\life=Rnd(200,600)
p\fadebias=0.002
p\speed=Rnd(0.01,0.02)
p\ang_speed=Rnd(0.1,2)
p\ang=Rnd(-45,135)
p\scale=Rnd(0.5,1); ******** ADDED
loop_exit=1
VertexCoords(surface,p\pindex+0,p\x+Sin(p\ang)*p\scale,p\y+Cos(p\ang)*p\scale,p\z); ******** EDITED
VertexCoords(surface,p\pindex+1,p\x+Sin(p\ang+90)*p\scale,p\y+Cos(p\ang+90)*p\scale,p\z); ******** EDITED
VertexCoords(surface,p\pindex+2,p\x+Sin(p\ang-90)*p\scale,p\y+Cos(p\ang-90)*p\scale,p\z); ******** EDITED
VertexCoords(surface,p\pindex+3,p\x+Sin(p\ang+180)*p\scale,p\y+Cos(p\ang+180)*p\scale,p\z); ******** EDITED
End If
If loop_exit=1 Then Exit
Next
Return