Advanced particle system theory...

Started by
3 comments, last by Moe 22 years, 5 months ago
I recently read the article at gamasutra.com on how to make an advanced particle system. I understand everything except that thingy that John Van Der Burg (is that how its spelt?) uses in his particle manager class. He uses something like a template array (if thats what its called). It allows a system to be added and removed without using an array. How does this work? Is it something like a linked list? I want to be able to add and remove systems like that so that I don''t have to allocate a big array of my particle effects. I was thinking of doing something a bit different: I would have a class called something like ParticleSystemID. It would have an integer and a bool for member variables. I would have an array of these ParticleSystemID classes (say 1000 of them). When I want to add an effect to the manager I loop through the array of ParticleSystemIDs until I find one that isn''t in use (by checking the bool variable). When I find one that isn''t being used, I create a new effect and assign it to the ID. When I want to render or do something to the individual effects, I would search through the array of IDs. Would this work?
Advertisement
Anyone?
I think his template thingie is just his templated array class with a counter.

I guess its something similar to this

  template <class T>class templateArray{    T*  objects;    int counter;    void addobject(T*);    void removeobject(int);}  


ask me if ya need any more help, I implemented a particle system similar to what Van der Burg does, but with some improvements and more "plug-in" friendly.

Paul

You never heard of the STL? Use it!
What you want is a vector, use it like this:

// Make it like this:
vector Systems;

// To add one:
ParticleSystemID sys;
// Set up sys
System.push_back(sys);

// To remove one:
System.remove(System.begin() + index);

#include or #include to use it
You can get the STL from many sources, try a search on google.


I think the html flags messed up those 2 includes. Try putting a space between the angled brackets and the names...

This topic is closed to new replies.

Advertisement