Hi,
ich bin gerade dabei eine PartikelEngine zu programmieren. Das Ganze soll objektorientiert geschehen.
Dazu habe ich 2 Klassen erstellt: cParticleEffekt und cParticle:
Delphi-Quellcode:
type cParticle=class
private
thePosX, thePosY: real;
procedure setVelocity(pVelocity: Velocity3f);
procedure Kill();
end;
type cParticleEffekt=class
private
theMaxParticleCount: integer;
theTime: real;
particle: array of cParticle;
public
procedure Calculate(t: real);
procedure addParticle(pIndex, pPreset: integer);
constructor create(pMaxParticles: integer);
end;
Nun muss ich zwischen diesen beiden Klassen eine bidirektionale Beziehung aufbauen, damit
a) die Klasse cParticleEffekt auf die einzelnen Partikel zugreifen kann und diese berechnen kann
b) die Klasse cParticle Zugriff auf Variablen der Klasse cParticleEffekt hat, welche sich global auf alle Partikel auswirken
Leider bin ich damit überfordert. Ich wollte die Klasse cParticle von der cParticleEffekt Klasse abhängig machen und habe das Ganze so modelliert:
Delphi-Quellcode:
type cParticle=class
private
thePosX, thePosY: real;
[b] ParticleEffekt: cParticleEffekt; [/b]
procedure setVelocity(pVelocity: Velocity3f);
procedure Kill();
[b] constructor create(pParticleEffekt: cParticleEffekt); [/b]
end;
type cParticleEffekt=class
private
theMaxParticleCount: integer;
theTime: real;
[b] particle: array of cParticle; [/b]
public
procedure Calculate(t: real);
procedure addParticle(pIndex, pPreset: integer);
constructor create(pMaxParticles: integer);
end;
Jetzt kennt die Klasse cParticle aber natürlich den Datentyp cParticleEffekt noch nicht.. wenn ich das Ganze umdrehe im Code, dann kennt eben die Klasse cParticleEffekt den DAtentyp cParticle nicht, und das ist mein Problem.
Wie muss ich das korrekt modellieren, damit es realisierbar ist?
Oder: Wie erstelle ich die Signatur einer Klasse? Also sowas in der Art:
Delphi-Quellcode:
type cParticleEffekt=class
end;
Sozusagen eine leere Klasse. Leider kommt dann die Meldung bei der richtigen Klasse, dass der Bezeichner redefiniert wird..
Danke + Grüße
Passi