Mettiamo il caso, ma è solo un'ipotesi, che io abbia capito il tuo problema: Vuoi poter applicare una serie di trasformazioni (che vengono generate a run time) ai tuoi elementi grafici; quindi io ti consiglierei di impostare (in linea di massima) la struttura dell'applicazione nel seguente modo:
codice:
class CMesh { //Base Class
//Interfaccia pubblica usata dai trasformer, ...
}
class Transformer { //Base Class
public: virtual void doStuff(Mesh mesh) = 0;
}
class FooTransformer : public Transformer {
public: FooTransformer(/*params ... */) { /*...*/ }
public: void doStuff(Mesh mesh) { /* do stuff ...*/}
}
Quindi, una volta istanziato il Transformer che ti serve (se hai una serie di parametri fissi, che determinano il tipo di trasformer, puoi anche optare per i template), nel loop principale potrai applicare i vari effetti ai vari oggetti di tipo CMesh nel seguente modo:
codice:
CMesh myMesh(/*...*/);
FooTransformer myTransformer(/*...*/);
//....
myTransformer.doStuff(myMesh);
Quindi non sarà l'oggetto CMesh, target della trasformazione, a dover prelevare i parametri necessari alla trasformazione stessa, ma sarà la Trasformazione (in fase di istanza oppure nella chiamata) a disporre di tali informazioni.
Ovviamente puoi mettere tutti i trasformer in un array ed eseguirli uno dopo l'altro (in questo caso avrai un array contenente le coppie <Transformer, CMesh>) in base a temporizzazioni o eventi.
Spero di aver colto e di essere stato d'aiuto.