Oke erstmal danke das ihr mir hier alle so tatkräftig helft.
Das mit den Profilern hab ich jetzt nicht so ganz hinbekommen, ich hab mir gDebugger und CodeXl von AMD runtergeladen. Von der aufmachung her sind die ja sehr ähnlich nur hab ich nicht ganz kapiert was ich da jetzt machen muss.
Andererseits hab ich mal ein bisschen auskommentiert um vielleicht zu sehen wo der Hund begraben liegt. Was mir da aufgefallen ist:
Um Kollisionen und die Richtung der AI zu berechnen übergebe ich in der Updatefunktion einen Vektor->
|
C-/C++-Quelltext
|
1
2
|
// window brauch ich um zu rendern, plr ist der player und den Vector auf die Objekte
void update( sf::RenderWindow &window, player plr, std::vector<objekt> &obj );
|
So das heißt doch theoretisch kopiere ich jeden Frame den Vektor? Aber ich brauche den Vektor eben um die Bewegungen der AI und die Kollision der AI und des Players zu berechnen.
Also es liegt 100% an dem Vektor sobald ich keinen Vektor übergebe kann ich den Player updaten und das spiel läuft flüssig.
Edit: ich hab jetzt einfach außerhalb mal einen Zeiger auf den Vector gespeichert und übergebe den jedesmal Türme lassen sich damit jetzt mehr bauen und ich kann 10 Gegner spawnen und bin noch bei 15 FPS bei den ersten 3 merkt man gar nichts
Edit²: Alles was ich jetzt per Reference übergeben habe habe ich jetzt per Pointer übergeben und siehe da ich kann alles wunderbar bauen spawnen usw. und bleibe bei einer konstanten Framerate