Code: Alles auswählen
Procedure MOVE_PARTICLE(fTime.f)
;//Alle Partikel druchgehen
ForEach Particle()
With Particle()
;// Lebenszeit verringern
\fLifeTime - (fTime.f) ;// Lebenszeit verringern
;// Ist der Partikel verschwunden?
If \fLifeTime <= 0.0
DeleteElement(Particle())
; Nicht ProcedureReturn benutzen, weil sonst die anderen Elemene nicht bewegt werden,
; da sofort zurück gesprungen wird. Wäre z.B. die Lebenszeit von Partikel 20 vorbei
; würden nur die ersten 19 bewegt und der Rest nicht mehr
;ProcedureReturn OK
; sondern
Continue; macht dann beim nächsten Element weiter
EndIf
;// Bewegen
\Vector3_position(0) + \Vector3_velocity(0) * (fTime.f) ;X
\Vector3_position(1) + \Vector3_velocity(1) * (fTime.f ) ;Y
;// Abbremsen
If Not \fFriction = 1.0
\Vector3_velocity(0) * Pow(\fFriction,(fTime.f))
\Vector3_velocity(1) * Pow(\fFriction,(fTime.f))
EndIf
;// Partikel animieren
\fParticle + \fDeltaParticle * fTime.f
\fSize + \fDeltaSize * fTime.f
\Color + \DeltaColor * fTime.f
\fRotation + \fDeltaRotation * fTime.f
\Vector3_position(0) + Cos(\fRotation) * \Vector3_velocity(0) ;X
\Vector3_position(1) + Sin(\fRotation) * \Vector3_velocity(1) ;Y
EndWith
Next
ProcedureReturn OK
EndProcedure