- unit partikel;
- interface
- uses opengl,glaux,windows;
- var
- timerfrequency,timetemp:int64;
- quad: gluint;
- emitcooldown:integer;
- type vector = record
- x: single;
- y: single;
- z: single;
- end;
- type color = record
- r: single;
- g: single;
- b: single;
- end;
- type particle = record
- position: vector;
- richtung: vector;
- farbe: color;
- alpha: single;
- life: single;
- fade: single;
- groesse: single;
- dichte: single;
- gewicht: single;
- end;
- type gravitationspunkt = record
- position: vector;
- g: single;
- end;
- type emitter = class(TObject)
- private
- glist: array of gravitationspunkt;
- public
- aktiv: boolean;
- emissionspan: array[0..1] of integer;
- fadespan: array[0..1] of single;
- colorspan: array[0..1] of color;
- skalierung: vector;
- position: vector;
- richtung: vector;
- streuung: vector;
- frequenz: real;
- textur: gluint;
- partikel: array of particle;
- constructor Create(active:boolean; espanstart: integer; espanend: integer; fadespstart: single; fadespend: single
- ; cspanstart: color; cspanend: color; pos: vector; head: vector; streu: vector; scale: vector; freq: single; tex:gluint);
- procedure AddG(Punkt: gravitationspunkt);
- procedure DelG(Punkt: integer);
- procedure DoIt(timefactor:real);
- end;
- procedure initparticles;
- procedure emit(emi:emitter;timefactor:real);
- procedure partbewegen(emi:emitter;timefactor:real);
- PROCEDURE glBindTexture(target: GLenum; texture: GLuint); STDCALL; EXTERNAL opengl32;
- implementation
- constructor emitter.Create(active:boolean; espanstart: integer; espanend: integer; fadespstart: single; fadespend: single
- ; cspanstart: color; cspanend: color; pos: vector; head: vector; streu: vector; scale: vector; freq: single; tex:gluint);
- begin
- inherited create;
- aktiv:=active; //<==hier zeigt delphi hin nach der fehlermeldung!!
- emissionspan[0]:=espanstart;
- emissionspan[1]:=espanend;
- fadespan[0]:=fadespstart;
- fadespan[1]:=fadespend;
- colorspan[0]:=cspanstart;
- colorspan[1]:=cspanend;
- position:=pos;
- richtung:=head;
- streuung:=streu;
- frequenz:=freq;
- skalierung:=scale;
- textur:=tex;
- end;
- {...}
- end.